为什么JavaMail IMAP无法反序列化某些附件?

问题描述

我有一个使用IMAP configuration配置了Java Mail的客户端应用程序。对于大多数电子邮件来说,这很完美,但是在一组电子邮件中,似乎无法将电子邮件反序列化为正确的附件对象。

我的程序包括查找带有1个或2个XML文件和PDF的电子邮件。当找不到此类附件时,我将跳过电子邮件并移至下一个。该程序的许多用户开始报告我们的应用程序未正确处理某些电子邮件

在检查这些特殊情况时,我注意到这些情况始终有两个附件,其中第二个附件包含原始base 64和相应的文件。换句话说,第二个附件在text / plain标题下表示,它包含我的两个XML文件和PDF文件,只是它们在单个附件中表示为base64。

例如

在这些消息中,附件2的内容总是这样:

----boundary_479804_03aa9176-3080-4c9b-9ea5-f8c7ef875479
Content-Type: text/xml;
 name=50630092000310170864300100001010000024225100024225.xml
Content-transfer-encoding: base64
Content-disposition: attachment

PD94bWwgdmVyc2lvbj0ims4wIiBlbmNvZgluZz0iVVRGLTgiPz4NCjxGYWN0dXJhRWxl
...

----boundary_479804_03aa9176-3080-4c9b-9ea5-f8c7ef875479
Content-Type: text/xml;
 name=50630092000310170864300100001010000024225100024225-Confirmation.xml
Content-transfer-encoding: base64
Content-disposition: attachment

PD94bWwgdmVyc2lvbj0ims4wIiBlbmNvZgluZz0iVVRGLTgiPz48TWVuc2FqZUhhY2ll
...
----boundary_479804_03aa9176-3080-4c9b-9ea5-f8c7ef875479
Content-Type: application/pdf;
 name=50630092000310170864300100001010000024225100024225.pdf
Content-transfer-encoding: base64
Content-disposition: attachment

JVBERi0xLjcgCiXi48/TIAoxIDAgb2JqIAo8PCAKL1R5cGUgL0NhdGFsb2cgCi9QYWdl

换句话说,树附件从未被反序列化为它们适当的附件对象。它只是将原始电子邮件中的所有内容放入其中。我不明白为什么Java Mail没有将邮件反序列化为三个适当的附件邮件

奇怪的是,如果从客户端电子邮件程序(如Outlook或Gmail)转发了该邮件,则在第二次接收到该邮件时,将对其进行正确的格式化,并且一切都会按预期进行。

显然,原始邮件有些奇怪,但是电子邮件客户端应用程序(例如Outlook和Gmail)即使在原始接收邮件时也知道如何处理它,并在转发时纠正问题。

也许我缺少一些用于处理此类问题的配置参数。如果我很幸运,那里的人也看到了这种情况,可以给我一些处理建议。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)