這是我的文件附加到郵件代碼:Java郵件附件越來越損壞
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
添加文件。
這裏的問題是,儘管文件被附加,我收到的電子郵件罰款,我無法打開附件,因爲數據已損壞。這發生在我嘗試附加的所有文件中,例如jpegs,pdf,電子表格,word文檔和txt文件。
我在這裏讀到:https://community.oracle.com/thread/1589120,這可能發生,因爲JavaMail使用編碼來破壞文件的二進制數據,並添加mbody2.setHeader("Content-Transfer-Encoding", "base64");
應該可以解決問題,但這對我不起作用。
關於什麼可能是錯誤的任何想法?
感謝
取出標題做了訣竅。 你能解釋爲什麼或如何標題搞砸了電子郵件? 謝謝。 –
您正在重寫附件的Content-Type,該附件應該適用於您附加的任何類型的文件,以表明它是多部分。它當然不是;它包含**在多部分。其他人只是不必要的,因爲JavaMail將(幾乎總是)爲您選擇正確的內容類型和編碼。 –