我有一封电子邮件,由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
答案 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')