Java 当outlook项目(.msg文件)作为附件添加到发送的outlook电子邮件中时,文件名返回为null

Java 当outlook项目(.msg文件)作为附件添加到发送的outlook电子邮件中时,文件名返回为null,java,outlook,jakarta-mail,Java,Outlook,Jakarta Mail,当我从Outlook发送带有Outlook项目(.msg文件作为附件)的电子邮件时,方法getFileName()(用于获取与身体部位关联的文件名)的返回值将变为null。我还尝试使用了DataHandler()的getName(),但仍然得到null值 如何处理将outlook项目(.msg文件)作为附件的这种情况 PS:我能够检索到每一个其他附件(.png、.doc、.pdf等)的文件名,我只面临.msg附件的问题 如有任何建议,将不胜感激 提前感谢。您观察到的内容对Outlook发送的邮件

当我从Outlook发送带有Outlook项目(.msg文件作为附件)的电子邮件时,方法
getFileName()
(用于获取与身体部位关联的文件名)的返回值将变为null。我还尝试使用了
DataHandler()
getName()
,但仍然得到null值

如何处理将outlook项目(.msg文件)作为附件的这种情况

PS:我能够检索到每一个其他附件(.png、.doc、.pdf等)的文件名,我只面临.msg附件的问题

如有任何建议,将不胜感激


提前感谢。

您观察到的内容对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
的消息源。例如,loooks会喜欢

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"
正如您所看到的,没有为这种类型的附件指定
文件名
,当您试图检索它时,它将返回
null


这个建议很明显。。。处理附件时,请查看
内容类型
,如果这是没有名称的嵌入消息,只需设置您喜欢的内容即可。例如,Gmail会在附件列表中显示“noname”。

您好,欢迎光临:请在您的问题中添加代码,向我们展示您迄今为止所做的工作。在这里查看更多信息-->要清楚,任何类型的附件都不需要有文件名,因此代码必须始终处理未提供文件名的情况。当然,要注意您对提供的文件名的“信任”程度。