我正在一个apache camel项目中下载收件箱中的任何附件,以实现我遵循http://camel.apache.org/mail.html中使用附件的邮件示例中的信息。除了附件的文件名带有特殊的字符或空格外,其他操作都很正常。例如,如果附件的文件名为“voucher.pdf”,则程序将运行并下载该文件,但如果附件的文件名为“Pase de abordar en Línea(1).pdf”,则会出现以下错误:
消息历史记录----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
null
这是我的主要方法:
public class Main {
public static void main(String[] args) throws FileNotFoundException {
KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("C://Program Files (x86)//Java//jre1.8.0_161//lib//security");
ksp.setPassword("changeit");
KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("changeit");
SSLContextParameters scp = new SSLContextParameters();
scp.setKeyManagers(kmp);
BasicConfigurator.configure();
RutaMail routeBuilder = new RutaMail();
SimpleRegistry jndi= new SimpleRegistry();
jndi.put("keystore", scp);
CamelContext ctx = new DefaultCamelContext(jndi);
try {
ctx.addRoutes(routeBuilder);
ctx.start();
Thread.sleep(30000);
ctx.stop();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是骆驼路线:
public void configure() throws Exception {
from("imaps://imap.gmail.com:993?username=user@gmail.com&password=password"
+ "&delete=false&unseen=true&consumer.delay=60000&contentType=multipart/MIXED")
.convertBodyTo(String.class, "UTF-8")
.process(new MailProcessor())
.to("file:C:/outputFolder/?flatten=true&fileName=${header.nombref}")
.log("el nombre del archivo es ${header.nombref}").end();
}
}
这是处理器:
public class MailProcessor implements Processor {
public void process(Exchange exchange) throws Exception {
String nombre="";
// the API is a bit clunky so we need to loop
Map<String, DataHandler> attachments = exchange.getIn().getAttachments();
String file="";
if (attachments.size() > 0) {
for (String name : attachments.keySet()) {
DataHandler dh = attachments.get(name);
String filename =dh.getName();
nombre =filename;
byte[] data = exchange.getContext().getTypeConverter()
.convertTo(byte[].class, dh.getInputStream());
exchange.getIn().setBody( data);
exchange.getIn().setHeader("nombref", filename);
}
}
}
}
谢谢你的帮助。
看来你的操作系统不允许用这样的名字保存文件。
问题内容: 我查看了参考文档,Spring似乎对发送邮件有很好的支持。但是,我需要登录到邮件帐户,阅读邮件并下载所有附件。Spring mail API是否支持下载邮件附件? 我知道您可以使用Java Mail API来执行此操作,但是在过去,我发现使用它非常冗长且令人不愉快。 编辑 :我收到了一些指向教程的答复,这些教程描述了如何发送带有附件的邮件,但是我要问的是如何从 收到的 邮件中 读取 附
如何从内容类型为“多部分/备选”的邮件中下载附件;
我有一个网络应用程序,用户可以点击按钮下载PDF报告。 我的用户要求在下载PDF时立即将其作为电子邮件附件打开(有点像单击mailto锚时)。 这可能吗?我在想也许可以在幕后使用js生成锚定标记,但我读到mailto并不真正支持附件。 如果这很重要,PDF将使用PHP mPDF设置为下载输出模式在服务器端生成。
我一直在使用此脚本向某些员工发送电子邮件,但由于我的系统发生了更改,我现在必须随电子邮件发送附件,我尝试了多个代码来完成此任务,但都没有成功。。。我仍然收到电子邮件,但没有附件,这在这种情况下是毫无意义的,我已经把我正在使用的脚本放在下面 我已经删除了我使用的真实地址和smtp服务器 我也尝试了一些其他的emtods附加的文件,但似乎没有工作任何帮助是大大的
我需要将邮件从我的gmail帐户发送到另一个帐户。我使用了以下代码。 但我得到的错误如下。。。javax。邮政MessaginException:无法连接到SMTP主机:SMTP。gmail。com,端口:25 我该怎么解决这个问题。你能帮我吗?
这是我发送邮件的代码 我在tomcat的lib文件夹中添加了和。我将eclipse与Tomcat7、JRE7和Struts2一起使用。通过Java发送邮件时出现以下控制台错误: