� 在 base64 编码的电子邮件中

Posted

技术标签:

【中文标题】� 在 base64 编码的电子邮件中【英文标题】:� in base64 encoded emails 【发布时间】:2011-12-30 15:37:22 【问题描述】:

我对瑞典语 + MS Outlook 有疑问。

除了 MS Outlook,它在任何地方都很好用。在 MS Outlook 中,瑞典语字符显示为 �。电子邮件内容是 base64 编码、uft-8 等。有什么问题?

附录:

这是消息:

============================================================  
Header 
============================================================ 

*** NY Beställning *** 

Ni har fått ny beställning från: FirstAccount 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
Beställnings-ID: FA12914-1  
Beställningsdetaljer: http://somelink
Beställningsdatum: 11/14/2011 11:16  
Önskat leveransdatum:   
Ordersedel: http://somlink 
Original: <http://somelink> 
Product: New stuff 
Product ID:   
Description:  
Qty: 11 
Job type: Release from stock

Kommenar:  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


_______________________________________________________________ 
Copyright (c) 2011 Someone

这是来源:

Return-path: <test@example.com>
Envelope-to: admin@example.com
Delivery-date: Mon, 14 Nov 2011 11:17:00 +0000
Received: from somewhere ([123.456.789.012])
        by someone.co.uk with esmtp (Exim 4.69)
        (envelope-from <test@example.com>)
        id 1RPuX1-0006sU-HG
        for admin@example.com; Mon, 14 Nov 2011 11:16:58 +0000
Received: by someone.co.ul (Postfix, from userid 33)
        id B743C4EB7F; Mon, 14 Nov 2011 11:16:52 +0000 (UTC)
To: "Admin" <admin@example.com>
Subject: Ny beställning har kommit in från ace Beställnings-ID: FA12914-1
From: test@example.com
X-Mailer: html Mime Mail Class
MIME-Version: 1.0
Content-Type: multipart/mixed;

   boundary="=_41bea315b9b2f2301a97632f8d6c3057"
Message-Id: <20111114111652.B743C4EB7F@li214-208.members.linode.com>
Date: Mon, 14 Nov 2011 11:16:52 +0000 (UTC)
X-Spam-Status: No, score=1.4
X-Spam-Score: 14
X-Spam-Bar: +
X-Ham-Report: Spam detection software, running on the system "somewhere", has
   identified this incoming email as possible spam.  The original message
   has been attached to this so you can view it (if it isn't spam) or label
   similar future email.  If you have any questions, see
   the administrator of that system for details.
X-Spam-Flag: NO


This is a MIME encoded message.

--=_41bea315b9b2f2301a97632f8d6c3057
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64

PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09

PT09IA0KYWNlIA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09

PT09PT09PT09PT09PT09IA0KICAgICAgICAgICAgICAgIA0KKioqIE5ZIEJlc3TDpGxsbmluZyAq

KiogDQ........

--=_41bea315b9b2f2301a97632f8d6c3057--

【问题讨论】:

显示有代表性的示例消息;它的 MIME 标头和几个字节的内容。我强烈怀疑您的邮件有缺陷,但它当然也可能是 Outlook 中的错误。 【参考方案1】:

粘贴的消息源似乎在 Content-Type: 标头中间有一个虚假的换行符。它应该是单个逻辑行;虽然也许你粘贴错了( Received: 标题至少没有正确粘贴)。在 base64 正文部分似乎发生了类似的事情——我们在数据行之间看到了空行。

看起来像这样:

Content-Type: multipart/mixed;

boundary="=_41bea315b9b2f2301a97632f8d6c3057"

应该是:

Content-Type: multipart/mixed;
   boundary="=_41bea315b9b2f2301a97632f8d6c3057"

在“boundary”关键字前至少有一个空白字符;甚至

Content-Type: multipart/mixed; boundary="=_41bea315b9b2f2301a97632f8d6c3057"

此外,如果主题行包含 8 位数据,您应该对主题行进行 RFC2047 编码。

Subject: =?utf-8?Q?Ny_best=C3=A4llning_har_kommit_in_fr=C3=A5n_ace_Best=C3=A4llnings-ID:_FA12914-1?=

删除换行符后,正文部分中的 base64 数据看起来正确,即“Beställning”一词正确显示(尽管它不应该正确大小写;也许有一个 Swedish.stackexchange.com 来批评您的复制?:-)

X-Mailer: 标头表明您正在使用软件生成这些邮件;它可能具有正确执行这些操作的选项,但您没有使用它们。这是一个编程论坛,因此您可能应该向我们展示您的代码,并用适当的编程语言标记问题。

【讨论】:

感谢您的信息。我已经更新了标题,使其看起来与原始消息中的完全一样,并且确实有一个新行。 我正在使用 php,但问题是代码太糟糕了,以至于我什至不确定应该显示哪个部分。我继承了一些毫无头绪的人编写的大型代码库。现在我开火了。谢谢,我会检查标题的内容,如果有帮助,请告诉您。至于主题...我尝试对其进行编码,但Thunderbird没有对其进行解码...实际上主题是唯一在Outlook中正确显示瑞典语字符的部分-无需编码。 没有关于实际代码的任何信息,我们无法帮助您修复它。我手工编写了 RFC2047 主题标头,可能是我犯了错误,或者忘记了什么。无论如何,这对您的问题并不重要。 有错误的典型 PHP 代码会创建一个名为 $message$header 的对象,然后将其修改为字符串,而不是使用其文档化接口来添加和修改标题、MIME 部分等不管什么正确,工作的 MIME 应该是什么样子。

以上是关于� 在 base64 编码的电子邮件中的主要内容,如果未能解决你的问题,请参考以下文章

使用 CodeIgniter 发送 base64 编码的电子邮件

如何确定是不是通过 imap base64 编码获取邮件?

base64的MIME

python中base64编码与解码

Base64编码的长度问题-文件越大Base64的值越长

Base64编码的原理