在Outlook中收到电子邮件时附件名称不正确

问题描述:

我通过javax.mail发送带附件的电子邮件。 当有西里尔字母或重音符号(当只有标准的拉丁符号时,一切正常)时,MS Outlook显示附件名称,如“ATTxxx.xxx”。当我使用网络界面时,名称是正确的。在Outlook中收到电子邮件时附件名称不正确

添加附件:

private void attachFile(DataSource source, String attachmentName) 
    throws MessagingException, UnsupportedEncodingException { 
     MimeBodyPart filePart = new MimeBodyPart(); 
     filePart.setDataHandler(new DataHandler(source)); 
     filePart.setFileName(MimeUtility.encodeText(attachmentName, charsetUTF, null)); 
     filePart.setHeader("Content-Transfer-Encoding", "base64"); 
     mp.addBodyPart(filePart); 
    } 

我GOOGLE了很多,但还没有找到任何解决办法。

+0

您使用的是什么版本的JavaMail?而不是你自己的编码文件名,可以设置['mail.mime.encodefilename'](https://javamail.java.net/nonav/docs/api/javax/mail/internet/package-summary.html#mail .mime.encodefilename)属性。您可能还需要设置['mail.mime.encodeparameters'](https://javamail.java.net/nonav/docs/api/javax/mail/internet/package-summary.html#mail.mime.encodeparameters )属性为false以禁用RFC 2231编码,而旧版本的Outlook不理解。 –

+0

谢谢!我的问题解决了。现在我使用最新版本的javax.mail - 1.5.0-b01,一切正常。你能写这个答案吗? –

+0

最新的是1.5.6。 –

解决方案是使用最新版本的javax.mail - 1.5.6,感谢Bill Shannon。