我确实使用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: BASE64Outlook这样的邮件客户端不理解它,所以我需要让javamail不要将文件名分割成两行。
阅读RFC后,我找到了一个属性,上面写着不要拆分:"mail.strictly_mime.parm_folding“
如何在javamail中设置它?
发布于 2015-06-03 19:57:11
mail.strictly_mime.parm_folding属性是用于雷鸟的,它不在RFC中。
根据这篇雷鸟文章,Outlook不支持RFC 2231,JavaMail用来对文件名参数进行编码。通过将JavaMail系统属性"mail.mime.encodeparameters“设置为"false“,可以禁用RFC 2231编码。您可能希望将系统属性"mail.mime.encodefilename“设置为"true”,以使用Outlook支持的非标准文件名编码。
发布于 2016-11-15 16:57:56
我在WildflixV.10.x上发现了这个问题
将format="flowed“插入内容类型求解
MimeBodyPart part = new MimeBodyPart();
part.addHeader("Content-Type", "application/pdf; charset=\"UTF-8\"; format=\"flowed\" ");
part.setFileName(MimeUtility.encodeText(file.getName(), "UTF-8", null));
//setDataHandlerhttps://stackoverflow.com/questions/30628139
复制相似问题