Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“设置”;邮件。严格地说是“默剧。帕尔姆折叠”;在javamail中_Java_Email_Jakarta Mail_Email Attachments - Fatal编程技术网

“设置”;邮件。严格地说是“默剧。帕尔姆折叠”;在javamail中

“设置”;邮件。严格地说是“默剧。帕尔姆折叠”;在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*

我确实使用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不理解它;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?”