【发布时间】:2014-03-03 02:51:25
【问题描述】:
我一直在实现读取电子邮件文件的功能。如果文件有附件,则返回附件名称。 现在我正在使用 Javamail 库来解析电子邮件文件。这是我的代码。
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。 当电子邮件是 7bit Content-Transfer-Encoding 时,有什么方法可以获取附件名称? 对不起我的英语不好。
已编辑:这是有关我的测试文件的一些信息。 (X-Mailer:Emacs 21.3 / Mule 5.0 (SAKAKI) 上的 Mew 2.2 版); (Mime 版本:1.0):(内容类型:多部分/混合); (内容传输编码:7bit)
【问题讨论】:
标签: java email jakarta-mail attachment