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内容,我正在从arraylist
f
添加文件

这里的问题是,虽然文件被附加,并且我收到了电子邮件,但是我无法打开附件,因为数据已损坏。这适用于我尝试附加的所有文件,如JPEG、PDF、电子表格、word文档和txt文件

我在这里读到:这可能是因为JavaMail使用的编码会弄乱文件的二进制数据,并添加
mbody2.setHeader(“内容传输编码”,“base64”)应该可以解决问题,但这对我不起作用

对可能出现的问题有什么看法吗


感谢您抽出时间进行调试

首先,删除所有setHeader调用;其中一些是错误的,没有一个是必要的

接下来,确定问题是在发送端还是在接收端。请尝试多个邮件阅读器,看看他们是否都有附件问题

尝试发送纯文本附件。他们也腐败了吗

张贴显示当您发送一条带有简单附件的简单消息失败时会发生什么,这样我们就可以看到消息的构造是否正确

您使用的是什么版本的JavaMail


您使用哪个邮件阅读器查看附件?

取出邮件头就可以了。你能解释一下为什么邮件标题会弄乱邮件吗?谢谢。您正在覆盖附件的内容类型,这应该适用于您所附加的任何类型的文件,也就是说它是一个多部分文件。当然不是;它包含在一个多部分中。其他的都是多余的,因为JavaMail(几乎总是)会为您选择正确的内容类型和编码。