我确实使用 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 中。
根据这篇 Thunderbird 文章,Outlook 不支持 RFC 2231 http://kb.mozillazine.org/Attachments_renamed,JavaMail 使用它来编码文件名参数。您可以通过设置禁用 RFC 2231 编码JavaMail 系统属性“mail.mime.encodeparameters” https://javaee.github.io/javaee-spec/javadocs/javax/mail/internet/package-summary.html为“假”。您可能需要将系统属性“mail.mime.encodefilename”设置为“true”以使用非标准文件名编码 http://www.oracle.com/technetwork/java/javamail/faq/index.html#encodefilenameOutlook 支持的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)