email - 电子邮件 header 可以使用与电子邮件正文不同的字符编码吗?

标签 email mime rfc822

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

最佳答案

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

邮件正文只有在传输它的邮件服务器启用了 8bit mime 时才可以直接编码为不同的编码(现在每个邮件服务器都应该启用它,但不能保证),否则你需要在传输编码中对正文进行编码(引用打印或 base64)

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

例如你可以有:

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 header 中声明了一个字符集,在 html 正文元标记中声明了另一个字符集:

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

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

由您猜测实际使用的字符集。可能是元标记中的那个。

什么都不假设。期待一切。不要俘虏。这是斯巴达。

关于email - 电子邮件 header 可以使用与电子邮件正文不同的字符编码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27037816/

相关文章:

javascript - 资源在加载默认站点时被错误解释

perl - 如何在Perl中以RFC822格式优雅地打印日期?

MIME RFC "Content-Type"参数混淆?不明确的 RFC 规范

php - 错误 : Class 'PHPMailer' not found

php - 如何在访问页面时发送电子邮件通知?

java - 我可以跟踪 IMAP 邮件回复吗?

email - MIME 消息中的电子邮件地址是否有标准格式?

Python 发送带有正文内容的多部分电子邮件

delphi - 将 RFC 822 日期转换为 TDateTime

php - 从 PHP 发送邮件 - 是我的错误还是邮件服务器的错误?