仅获取电子邮件中的附件
Get Only the Attachments from an E-mail
我有一个检查电子邮件附件的代码:
final Multipart mp = (Multipart) msg.getContent();
final int numAttachments = mp.getCount();
...
final Part part = mp.getBodyPart(attachmentNumber);
但是,numAttachments
return 附件数量 + 1。当我遍历 mp.getBodyPart(index)
时,我发现我遍历了附件和电子邮件。我只想获取附件,而不是电子邮件。
我知道that:
Attachments will usually, but not always, have a Content-Disposition of attachment. Attachments will usually, but not always, have a file name.
当我对其进行测试时,我发现电子邮件始终位于第 0 个索引处,附件位于其后。因此,跳过第 0 个索引可能是一个解决方案,但我不知道这是否对所有电子邮件服务器都有效。
如何只获取电子邮件中的附件?
在简单的情况下,multipart/mixed 类型的消息将第一个 body 部分作为消息的主要内容,其他 body 部分作为附件。第一个 body 部分可能是一个简单的 text/plain 部分,也可能是 multipart/alternative 或 multipart/related 部分。但是跳过第一个 body 部分通常会达到你想要的效果。
MIME 允许更多复杂的情况。您必须决定是否以及如何处理这些情况。最复杂的情况是签名和加密的消息,但它们相对较少。
我有一个检查电子邮件附件的代码:
final Multipart mp = (Multipart) msg.getContent();
final int numAttachments = mp.getCount();
...
final Part part = mp.getBodyPart(attachmentNumber);
但是,numAttachments
return 附件数量 + 1。当我遍历 mp.getBodyPart(index)
时,我发现我遍历了附件和电子邮件。我只想获取附件,而不是电子邮件。
我知道that:
Attachments will usually, but not always, have a Content-Disposition of attachment. Attachments will usually, but not always, have a file name.
当我对其进行测试时,我发现电子邮件始终位于第 0 个索引处,附件位于其后。因此,跳过第 0 个索引可能是一个解决方案,但我不知道这是否对所有电子邮件服务器都有效。
如何只获取电子邮件中的附件?
在简单的情况下,multipart/mixed 类型的消息将第一个 body 部分作为消息的主要内容,其他 body 部分作为附件。第一个 body 部分可能是一个简单的 text/plain 部分,也可能是 multipart/alternative 或 multipart/related 部分。但是跳过第一个 body 部分通常会达到你想要的效果。
MIME 允许更多复杂的情况。您必须决定是否以及如何处理这些情况。最复杂的情况是签名和加密的消息,但它们相对较少。