JavaMail - 附件文件名未正确显示UTF-8字符

时间:2015-02-11 10:57:23

标签: java

我正在尝试在主题,邮件正文和附件文件名中发送可能包含UTF-8字符的邮件。

我可以将UTF-8字符作为Subject和Mesage正文的一部分发送。但是,当我发送包含UTF-8字符作为附件文件名的附件时,它没有正确显示。

所以我的问题是如何将附件文件名设置为UTF-8?

以下是我的代码的一部分:

MimeBodyPart pdfPart = new MimeBodyPart();
pdfPart.setDataHandler(new DataHandler(ds));
pdfPart.setFileName(filename);
mimeMultipart.addBodyPart(pdfPart);

稍后编辑:

我替换了

pdfPart.setFileName(filename);

pdfPart.setFileName(MimeUtility.encodeText(filename, "UTF-8", null));

它完美无缺。 谢谢大家。

2 个答案:

答案 0 :(得分:0)

MIME标头(如SubjectContent-Disposition)必须是mime编码的,如果它们包含非ascii字符。

编码是" quoted printable"或" base64"。我推荐quoted-printable

见这里:Java: Encode String in quoted-printable

答案 1 :(得分:0)

我不知道你如何发送附件。如果通过tomcat服务器上传,可能会导致conf / server.xml中的URIEncoding值