我确实使用 javamail 发送带有长文件名附件的邮件。 javamail 根据更新的 RFC 进行操作,并在邮件标题的两行中跨越文件名,如下例所示:
------=_Part_0_978693914.1433356404377
Content-Disposition: ATTACHMENT;
filename*0="=?UTF-8?Q?arquivo_com_nome_grande_e_acentua=C3=A7=C3=A3o.png\"; f";
filename*1="ilename*1=\"?="
Content-Type: APPLICATION/OCTET-STREAM;
name*0="=?UTF-8?Q?arquivo_com_nome_grande_e_acentua=C3=A7=C3=A3o.png\"; n";
name*1="ame*1=\"?="
Content-Transfer-Encoding: BASE64
像 Outlook 这样的邮件客户端不理解它,所以我需要让 javamail 不要将文件名分成两行。
阅读 RFC,我发现一个属性说不要拆分: “mail.strictly_mime.parm_folding”
如何在javamail中设置?
最佳答案
mail.strictly_mime.parm_folding 属性适用于 Thunderbird,它不在 RFC 中。
根据 this Thunderbird article, Outlook doesn't support RFC 2231 ,JavaMail 使用它来对文件名参数进行编码。您可以通过设置 JavaMail System property "mail.mime.encodeparameters" 来禁用 RFC 2231 编码为“假”。您可能希望将系统属性“mail.mime.encodefilename”设置为“true”以使用 non-standard filename encoding Outlook 支持。
关于java - 在 javamail 中设置 "mail.strictly_mime.parm_folding",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30628139/