“设置”;邮件。严格地说是“默剧。帕尔姆折叠”;在javamail中
我确实使用javamail发送带有长文件名附件的邮件。javamail根据最近的RFC进行操作,并在邮件头的两行中跨越文件名,如下例所示:“设置”;邮件。严格地说是“默剧。帕尔姆折叠”;在javamail中,java,email,jakarta-mail,email-attachments,Java,Email,Jakarta Mail,Email Attachments,我确实使用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*
------=_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不理解它;t将文件名拆分为两行
阅读RFC时,我发现一个属性显示为“不要拆分”:
“邮件,严格意义上的默剧,折叠”
如何在javamail中设置它?mail.mime.parm\u折叠属性是针对Thunderbird的,它不在RFC中
根据,JavaMail正在使用哪个来编码文件名参数。您可以通过将设置为“false”来禁用RFC 2231编码。您可能需要将系统属性“mail.mime.encodefilename”设置为“true”,以使用Outlook支持的属性。我在Wildfly Server V.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));
//setDataHandler
成功了!!下面就是解决这个问题的一段代码:System.setProperty(“mail.mime.encodeparameters”,“false”);System.setProperty(“mail.mime.encodefilename”、“true”);这是Outlook发送文件名的格式,以及javamail在设置答案中描述的参数后发送文件名的方式:内容配置:附件;filename=“=?UTF-8?Q?=C3=A9=C3=A5a=C3=A1=C3=AD=C3=B3=C3=BA=C3=A7=C3=A3=CB=9Ce=5F ks?=?UTF-8?Q?djahfksdajhf\u lkd?==?UTF-8?Q?saf\u jlkdsaj\u flksdj\u flkadsj\u f.png?”