Outlook:JavaMail 生成的 EML 文件中的附件存在问题

Outlook: problem with attachment in EML file generated by JavaMail

提问人:Filou 提问时间:4/24/2023 最后编辑:Filou 更新时间:6/5/2023 访问量:165

问:

我在使用 Outlook 打开电子邮件时遇到问题。

我正在使用 JavaMail/JakartaMail API(版本 1.6.x)以 rfc-email-format 创建电子邮件,结尾为 .有时我有附件名称很长的附件。JavaMail 符合第 3 节:参数值延续RFC2231并在 60 个字符后拆分长文件名(据我所知)。*.eml

因此,一个简短的附件名称如下所示:

Content-Disposition: attachment;
    filename=short-filename.txt

长文件名如下所示:

Content-Disposition: attachment;
    filename*0=this-is-a-filename-with-more-than-60-characters-which-is-ult;
    filename*1=imately-the-source-of-this-question.txt

现在,如果我在Outlook中打开此文件,第一个文件名将按原样显示,但对于第二个附件,名称类似于未知附件00004.txt*.eml

如果我在Mozilla Thunderbird中打开电子邮件,一切都像一个魅力。

所以我想知道这是否是Outlook中未实现RFC2231参数值延续的错误?

或者,也许这只是 JavaMail 实现中的一个错误,而 Thunderbird 非常强大,因为它不关心 JavaMail 中的这个潜在错误?

最重要的是,有没有更好的解决方案可以自己实现电子邮件生成和所有受影响的 RFC,以使其在 Oultook 中工作?

电子邮件 Outlook jakarta-mail 电子邮件附件

评论

0赞 tripleee 4/25/2023
Outlook 和 Thunderbird 都不是特别符合 RFC。一种可能的解决方法是压缩附件并在存档中存储适当的长文件名,并为其提供一个简短且不起眼的名称,以方便 Outlook 受害者。
0赞 tripleee 4/25/2023
值周围缺少引号是符合 RFC 的,但可能会使 Outlook 感到困惑。我不知道添加引号是否有帮助,甚至破坏 RFC 规范,但也许值得一试。filename=
0赞 Filou 4/25/2023
我只是在文件中添加了引号。可悲的是,它没有效果。但这是一个很好的建议@tripleee:-)

答:

0赞 Filou 6/5/2023 #1

我在一个较旧的 SO 问题中找到了答案:似乎 JavaMail 的 MimeBodyPart.setFileName 在电子邮件中插入了换行符并导致文件名显示为无效

设置为非常适合我。mail.mime.splitlongparametersfalse