对于所有电子邮件
有两个与mailing相关的系统属性,可能会简化您的代码。我实际上是在谈论此特定属性:
"mail.mime.charset"。
该
mail.mime.charset系统属性可以用来 指定默认MIME字符集
用于编码的单词和文本部分不另行指定一个字符集。通常,默认的MIME字符集是从file.encodingSystem属性中指定的默认Java字符集派生的。大多数应用程序无需显式设置默认的MIME字符集。如果用于邮件的默认MIME字符集与用于存储在系统上的文件的字符集不同,则应设置此属性。
如上文所述,默认情况下没有的值,
mail.mime.charset并且使用文件编码(
file.encoding属性)。
对于特定的电子邮件
但是,如果要为特定的电子邮件指定特定的编码,则可能应使用2参数
setSubject(subject,charset)和
setText(text,charset)方法。
如果那不起作用,则可能是您的输入在此之前已损坏。 换句话说,您可能使用了错误的编码来收集数据。
哑剧类型很复杂
的
setContent(content, "UTF-8")(其他消息来源)将只是不工作。只需查看此方法的签名即可:
setContent(Objectcontent, String mimetype)。 哑剧类型和字符集是两个完全不同的东西。
恕我直言,您实际上应该使用
setText(...)带有charset参数的方法之一。
但是,如果您坚持使用mimetype来设置charset
setContent(content,mimetype),那么请使用正确的格式。(不只是
"UTF-8",还包括
"text/plain;charset=UTF-8")。但更重要的 是,请注意,每种mime类型都有其自己的处理字符集的方式。
- 如在指定的RFC-2046的默认字符集
text/plain
就是US-ASCII
,但可以用一个额外的字符集参数被否决。 - 但是,在RFC-6657中明确指出,
text/xml
类型使用消息的内容确定字符集。 charset参数在这里将被忽略。 - 并在RFC-2854中声明
text/html
应始终始终指定一个字符集。但是,如果不这样做,它将使用ISO-8859-1
(=Latin-1
)。



