java - 正确地将编码设置为 UTF-8,即使这样电子邮件也会出现 ?和�

标签 java email encoding utf-8 jakarta-mail

我正在使用 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/

相关文章:

php - PHP 中的输出文件编码为 OCS-2 Big Endian

java - imgpanel.setImage(im);在按钮按下功能下的循环中不起作用,但一次性工作正常

forms - 带有复选框/单选按钮的电子邮件调查问卷?

php - 允许通过自己的网络服务器 iOS 7 发送电子邮件?

email - 如何在Meteor中使用自己的邮件服务器发送电子邮件?

java - BouncyCasSTLe 编码差异

linux - Mercurial 克隆俄罗斯符号,如 '?'

创建代理时出现java.lang.NoClassDefFoundError

java - 有没有办法将父类(super class) obj 更改为子类 obj?

java - 跨多个域的 Tomcat 集成 Windows 身份验证