将Outlook项目(.msg文件)添加为已发送的Outlook电子邮件的附件时,文件名返回为null

时间:2018-07-25 09:24:28

标签: java outlook javamail

当我从Outlook发送带有Outlook项(.msg文件为.msg文件)的电子邮件时,方法getFileName()(用于获取与正文部分关联的文件名)的返回值为null。附件)。我也尝试使用getName()的{​​{1}},但仍然将值设为null。

如何处理将Outlook项目(.msg文件)作为附件的情况?

PS :我能够检索其他所有附件(.png,.doc,.pdf等)的文件名,仅使用.msg附件会遇到麻烦。

任何建议将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

您观察到的内容对从Outlook发送的邮件有效。让我们看看Outlook中包含常规附件的邮件的来源。例如,附件的标题看起来像...

Content-Type: image/png; name="404.png"
Content-Disposition: attachment; filename="404.png"; size=30193; creation-date="Wed, 25 Jul 2018 13:44:01 GMT"; modification-date="Wed, 25 Jul 2018 13:44:01 GMT"
Content-Transfer-Encoding: base64

附件图像的filename字段已完成,当您尝试检索它时,它将返回404.png

现在,让我们看一下带有附件.msg附件的消息的来源。例如,这看起来就像...

Content-Type: message/rfc822
Content-Disposition: attachment; creation-date="Wed, 25 Jul 2018 13:40:28 GMT"; modification-date="Wed, 25 Jul 2018 13:40:28 GMT"

如您所见,没有为此类型的附件指定filename,当您尝试检索它时,它将返回null

该建议非常明显...处理附件时,请查看Content-Type,如果这是没有名称的嵌入式消息,则可以随意设置。例如,Gmail会在附件列表中显示“ noname”。