电子邮件标题的字符编码可以与电子邮件正文不同吗?

时间:2014-11-20 10:54:50

标签: email mime rfc822

具有不同字符编码的电子邮件的标题和正文是否有效? 用例:在处理电子邮件时,我应该单独检查它的标题的字符编码,还是检查它的正文是否足够? 有人可以指导我如何解决这个问题吗? 提前谢谢!

1 个答案:

答案 0 :(得分:8)

电子邮件标题应使用ASCII字符集,如果您希望标题字段具有使用编码字语法所需的不同编码:http://en.wikipedia.org/wiki/MIME#Encoded-Word

只有当传输它的邮件服务器启用了8bit mime时,电子邮件正文才能直接以不同的编码进行编码(现在每个邮件服务器应启用它,但不保证),否则你需要用传输编码对主体进行编码(quoted-printable或base64)

charset在每种情况下都可以不同,也就是说,您可以将不同字符集中的每个编码字和每个邮件部分编码在不同的字符集中,甚至也可以使用不同的传输编码。

例如,您可以:

Subject: =?UTF-8?Q?Zg=C5=82oszenie?= //header value in UTF-8 encoded with quoted printable

和身体编码:

Content-Type: text/plain; charset="iso-8859-2"
Content-Transfer-Encoding: base64

WmG/87PmIEfqtmyxIEphvPE=

不同的字符集,同一封电子邮件中的不同转移编码,没问题。

根据经验,我可以告诉你这些邮件很常见。更糟糕的是,您可以收到一封电子邮件,其中包含Content-Type标题中的一个字符集以及html body meta标记中的另一个字符集:

Content-Type: text/html; charset="iso-8859-2"

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charser=utf-8">

由您来猜测使用的实际字符集。可能它是meta标签中的那个。

什么也不做。期待一切。不要俘虏。这是斯巴达。