我正在使用 javax.mail API 将电子邮件发送到我的 Outlook。我的 body 里有中文和法文的字符。 我正确地将 body 设置为
MimeMessage.setText(body, "UTF-8");
还在电子邮件中,我正在检查标题。它们的正确形式是: 内容类型:文本/纯文本; 字符集=“UTF-8” 内容传输编码:quoted-printable
有趣的是,从另一台机器上,电子邮件可以正常发送,但是当我从桌面上尝试时,它无法正确编码。
我还通过打印正文来检查日志。它们正确地以中文和法文出现。 需要帮助 ? 和Sendmail有什么关系吗?
最佳答案
应该有效;你只是忘了做这道题而已。特别是当您检查标题时。编码调用:
MimeMessage message = new MimeMessage(session);
message.setSubject(subject, "UTF-8");
message.setText(body, "UTF-8");
//message.setHeader("Content-Type", "text/plain; charset=UTF-8");
我认为,您桌面上的电子邮件设置强制使用了错误的编码。
<小时/>Paranoia:通过硬编码的 u 转义字符串检查正文字符串:
message.setText("\u00e9\u00f4\u5837" + body, "UTF-8"); // éô堷
关于java - 正确地将编码设置为 UTF-8,即使这样电子邮件也会出现 ?和�,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20561528/