我一直在實現一個功能來讀取電子郵件文件。如果文件有附件,則返回附件名稱。 現在我正在使用Javamail庫來解析電子郵件文件。這是我的代碼。Javamail解析電子郵件正文與7BIT內容傳輸編碼
public static void parse(File file) throws Exception {
InputStream source = new FileInputStream(file);
MimeMessage message = new MimeMessage(null, source);
Multipart multipart = (Multipart) message.getContent();
for (int i = 0; i < multipart.getCount(); i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
String disposition = bodyPart.getDisposition();
if (disposition != null
&& disposition.equalsIgnoreCase(Part.ATTACHMENT)) {
System.out.println("FileName:"
+ MimeUtility.decodeText(bodyPart.getFileName()));
}
}
}
它工作正常,但是當郵件文件中有7位內容傳輸編碼,bodyPart.getFileName()使NullPointerException異常。 當電子郵件是7位Content-Transfer-Encoding時,有沒有辦法獲得附件名稱? 對不起,我英文很差。
編輯:這裏是關於我的測試文件的一些信息。 (X-Mailer:Emacs 21.3/Mule 5.0(SAKAKI)上的Mew 2.2版); (Mime-Version:1.0):(Content-Type:Multipart/Mixed); (Content-Transfer-Encoding:7bit)
謝謝你的回答,但它不起作用。堆棧跟蹤僅在body body.getFileName()處打印java.lang.NullPointerException。 – AnhTT
bodyPart不能爲null,所以在getFileName(或decodeText)中必須拋出NullPointerException。對不起,我忍不住進一步。 –