Exchange服务器将unicode字符插入明文电子邮件?

时间:2011-08-17 08:52:02

标签: php email exchange-server

我有一封电子邮件,由phpmailer使用明文发送。

当这封电子邮件通过php mail()发送时,我会收到确切的电子邮件。当电子邮件通过Small Business Server上的Exchange发送时,它似乎在某些点插入unicode字符。电子邮件程序收到的示例源代码:

php mail:

MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="utf-8"

Dear J,

This is confirmation of your registration.

Event: Green City Dialogues: Toward a sustainable built environment in Christchurch (2):     Green City Dialogues 2
Date: Monday, 19 September 2011 05:15 pm - 08:00 pm
Attendee: J D

Exchange服务器:

MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"
X-TM-AS-Product-Ver: SMEX-10.1.0.1137-6.500.1024-18326.006
X-TM-AS-Result: No--12.011100-0.000000-31
X-TM-AS-User-Approved-Sender: Yes
X-TM-AS-User-Blocked-Sender: No
X-DSPAM-Check: by xxx.xxx.xxx on Wed, 17 Aug 2011 11:59:06 +1200
X-DSPAM-Result: Innocent
X-DSPAM-Processed: Wed Aug 17 11:59:06 2011
X-DSPAM-Confidence: 0.5596
X-DSPAM-Probability: 0.0000

Dear xxxxx,

This is confirmation of your registration.

Event:=A0Green City Dialogues: Toward a sustainable built environment in Ch=
ristchurch (2): Green City Dialogues 2
Date: Monday, 19 September 2011 05:15 pm - 08:00 pm

3 个答案:

答案 0 :(得分:1)

UTF-8中的 U 代表 Unicode 。因为您在代码中使用它:

Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="utf-8"

...您已经发送了Unicode字符。

我知道你实际上是指这个:=A0。根据标题:

Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8

...它是Unicode字符的纯ASCII表示形式。这很好:Exchange只是修复您的电子邮件消息,因此它可以成功通过无法处理8位消息的电子邮件系统。实际上,如果要实现最大兼容性,则应do it yourself。在任何情况下,消息内容保持不变。它只是传输的临时编码。

答案 1 :(得分:0)

  

Content-Transfer-Encoding:8位

SMTP(通常)不支持8位数据。

我对phpmailer()并不过分熟悉 - 但我很惊讶它应该创建一个8位的电子邮件。

MS-Exchange可能不是我最喜欢的MTA,但在这种情况下,它似乎正确地清理了您的电子邮件。

AFAIK没有名为“php mail”的MTA - 所以我不确定你实际上在比较MS-Exchange处理过的电子邮件。

答案 2 :(得分:0)

事实证明,通过Unix服务器的纯文本电子邮件也包含a0字符,即使在源代码视图中也会被Gmail过滤掉。

问题是

html_entity_decode($结果[ 'introtext'])

修复

html_entity_decode($结果[ 'introtext'],ENT_COMPAT, 'UTF-8')