多部分/替代内容类型需要内容传输编码吗?

时间:2012-11-28 07:11:57

标签: email smtp sendmail content-type postfix-mta

我有一个发送电子邮件的应用程序,并且好几个月,它运行正常。我最近遇到了发送到iPhone utf-8的{​​{1}}个编码电子邮件的问题(即不是Exchange account)。 所有接收者必须看到的是一大堆毫无意义的人物,如IMAP

将我的电子邮件标题与Gmail进行比较,我发现我与LS0tLS0tPV9QYXJ0XzE0N18[....]有一个额外的Content-Transfer-Encoding。 我的电子邮件看起来像

Content-Type: multipart/alternative;

如果我删除了额外设置,我的电子邮件将被收到并正确显示。

我的问题:

  1. Delivered-To: ... Received: ... ... MIME-Version: ... Content-Type: multipart/alternative; boundary="----=_boundary" Content-Transfer-Encoding: Base64 # <= the extra setting ----=_boundary Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: Base64 YmVu0Cg== ----=_boundary Content-type: text/html; charset=utf-8 Content-Transfer-Encoding: Base64 PGh0bWwgeG1sbnM6bz0iIj48aGVhZD48dGl0bGU+PC90aXRsZT48L2hlYWQ+PGJvZHk+YmVub2l0 PC9ib2R5PjwvaHRtbD4NCjx9IjAiIC8+Cg== ----=_boundary 基本上需要Encoding设置,即使是特定情况吗?
  2. 删除它是否安全,只是像以前一样继续使用我的应用程序?
  3. 修改 我找到IETF

      

    编码注意事项:多部分内容类型不能包含编码。

    但我也在Wikipedia上找到了:

      

    多部分类型的内容传输编码必须始终如此   “7bit”,“8bit”或“二进制”以避免可能出现的并发症   由多级解码构成。

    这不矛盾吗?

2 个答案:

答案 0 :(得分:5)

实际上,multipart的每个部分都有自己的编码,为multipart容器声明一个没有意义。无论如何,我无法理解维基百科的报价;无论如何,它几乎不具有权威性。

答案 1 :(得分:5)

IETF和维基百科的声明并不是真的相互矛盾。 7bit8bitbinary并非真正的内容编码,因为它们未指定内容的任何转换。他们只是声明内容尚未编码。在7bit的情况下,它还指定即使消息需要通过非8位干净的传输发送,也不需要对内容进行编码。

只有最底层的邮件应具有实际Content-Transfer-Encoding,例如base64quoted-printable。在您从外部引用的消息中肯定不是base64编码的,因此声明它不仅违反了标准而且也是不正确的。这肯定会导致显示该消息的问题。