【发布时间】:2017-03-06 20:23:38
【问题描述】:
我正在通过 javax.mail 发送带有附件的电子邮件。 当有西里尔字母或重音符号时,MS Outlook 会显示诸如“ATTxxx.xxx”之类的附件名称(当只有标准拉丁符号时,一切正常)。当我使用网络界面时,名称是正确的。
添加附件:
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);
}
我搜索了很多,但没有找到任何解决方案。
【问题讨论】:
-
您使用的是什么版本的 JavaMail?您可以设置
mail.mime.encodefilename属性,而不是自己编码文件名。您可能还需要将mail.mime.encodeparameters属性设置为 false 以禁用 RFC 2231 编码,旧版本的 Outlook 无法识别。 -
谢谢!我的问题解决了。现在我使用最新版本的 javax.mail - 1.5.0-b01 并且一切正常。你能把这个写成答案吗?
-
最新的是1.5.6。
-
是的,你写的是 1.5.6
标签: java outlook jakarta-mail