Jakarta mail java邮件附件正在损坏
这是我将文件附加到邮件的代码:Jakarta mail java邮件附件正在损坏,jakarta-mail,email-attachments,corrupt-data,Jakarta Mail,Email Attachments,Corrupt Data,这是我将文件附加到邮件的代码: Multipart mp=new MimeMultipart("mixed"); BodyPart mbody=new MimeBodyPart(); mbody.setHeader("Content-Type", "text/html; charset=us-ascii"); mbody.setHeader("Content-Transfer-Encoding","7bit"); mbody.setContent(content2, "text/html");
Multipart mp=new MimeMultipart("mixed");
BodyPart mbody=new MimeBodyPart();
mbody.setHeader("Content-Type", "text/html; charset=us-ascii");
mbody.setHeader("Content-Transfer-Encoding","7bit");
mbody.setContent(content2, "text/html");
mp.addBodyPart(mbody);
for(File file:f){
BodyPart mbody2=new MimeBodyPart();
DataSource ds=new FileDataSource(file.getAbsolutePath());
mbody2.setDataHandler(new DataHandler(ds));
mbody2.setFileName(ds.getName());
mbody2.setHeader("Content-Type", "multipart/mixed");
mbody2.setHeader("Content-Transfer-Encoding", "base64");
mp.addBodyPart(mbody2);
}
m.setContent(mp);
content2
是我在电子邮件中嵌入的html内容,我正在从arraylistf
添加文件
这里的问题是,虽然文件被附加,并且我收到了电子邮件,但是我无法打开附件,因为数据已损坏。这适用于我尝试附加的所有文件,如JPEG、PDF、电子表格、word文档和txt文件
我在这里读到:这可能是因为JavaMail使用的编码会弄乱文件的二进制数据,并添加mbody2.setHeader(“内容传输编码”,“base64”)代码>应该可以解决问题,但这对我不起作用
对可能出现的问题有什么看法吗
感谢您抽出时间进行调试
首先,删除所有setHeader调用;其中一些是错误的,没有一个是必要的
接下来,确定问题是在发送端还是在接收端。请尝试多个邮件阅读器,看看他们是否都有附件问题
尝试发送纯文本附件。他们也腐败了吗
张贴显示当您发送一条带有简单附件的简单消息失败时会发生什么,这样我们就可以看到消息的构造是否正确
您使用的是什么版本的JavaMail
您使用哪个邮件阅读器查看附件?取出邮件头就可以了。你能解释一下为什么邮件标题会弄乱邮件吗?谢谢。您正在覆盖附件的内容类型,这应该适用于您所附加的任何类型的文件,也就是说它是一个多部分文件。当然不是;它包含在一个多部分中。其他的都是多余的,因为JavaMail(几乎总是)会为您选择正确的内容类型和编码。