我们最近将JavaMail API升级到了最新的1.5.4版本。升级后,我们发现附件(文件名>60个字符)在Outlook(配置POP3)中作为.dat
文件名接收。
请注意,只有当文件名超过60个字符并且Outlook配置了POP3时,才会出现此问题。
我们注意到,在JavaMail升级后,名称和文件名属性将作为多行出现。
JAVAMAIL升级前的邮件头
Content-Type: application/octet-stream;
name=Automation_Team_Directory_05-Dec-2015_123219_21312_155018252272708.PDF
Content-Disposition: attachment;
filename=Automation_Team_Directory_05-Dec-2015_123219_21312_155018252272708.PDF
JAVAMAIL升级后的邮件头
Content-Type: application/octet-stream;
name*0=Automation_Team_Directory_05-Dec-2015_123219_21312_155018252;
name*1=272708.PDF
Content-Disposition: attachment;
filename*0=Automation_Team_Directory_05-Dec-2015_123219_21312_155018252;
filename*1=272708.PDF
我们如何解决该问题,使其在使用POP3的Outlook中正确显示附件?
将系统属性mail.mime.encodeparameters
设置为false
。这将在创建消息时禁用RFC 2231支持。
我来这里是因为我遇到了同样的问题,即Coldfusion 11、2016和2018的新版本的附件通过电子邮件发送,这些新版本收到了升级Java Mail的最新补丁。
这重申了日本网站上的一个条目,即您可以通过Admin屏幕或编辑JVM.config文件将此属性添加到JVM属性中,从而将其放入Coldfusion。
http://cfassociates.samuraiz.co.jp/index.cfm/faq/cftech/cfmail-attachfilename-garbled/
然后要添加的属性是:
-Dmail.mime.encodeparameters=false
您会发现它改变了如上所述用于定义附件的页眉样式。