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

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

我能够发送 UTF-8 字符作为主题和消息正文的一部分。但是,当我发送具有 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));

它运行良好。谢谢大家。

stack overflow JavaMail - Attachment filename not displaying UTF-8 characters correctly
原文答案

答案:

作者头像

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

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

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

作者头像

不知道你是怎么发附件的。如果通过tomcat服务器上传,可能是由conf/server.xml中URIEncoding的值引起的