正在接收通过 php5+htmlMimeMail 发送的电子邮件,其中随机字符替换为 =

Posted

技术标签:

【中文标题】正在接收通过 php5+htmlMimeMail 发送的电子邮件,其中随机字符替换为 =【英文标题】:E-mails sent through php5+htmlMimeMail are being received with random characters replaced with = 【发布时间】:2010-10-15 13:39:37 【问题描述】:

目前使用 php5 和 htmlMimeMail 5 (http://www.phpguru.org/static/mime.mail.html) 来发送 HTML 电子邮件通信。许多收件人看到随机字符被等号替换时遇到了问题,例如:

“早上好。我们学校正在通过一家名为...的公司发送我们的时事通讯=和信息。”

已将电子邮件文本、HTML 和标头编码设置为 UTF-8。 PHP 为电子邮件加载的模板文件(仅包含 () 的文本/HTML,其中包含一些 php 标签)都以 UTF-8 编码。

有趣的是,我无法在我的任何电子邮件客户端上复制该问题,并且无法通过搜索 yahoo/googlies 找到任何可以指出问题的信息!!

【问题讨论】:

【参考方案1】:

我遇到了类似的问题,但我的问题有点不同。由于我偶然发现了这个线程来寻找答案并且它帮助我找到了它,我想我不妨在这里发布这个相关的答案。

在我的情况下,即使发送的文本字符串的实际 mb_detect_encoding 是“UTF-8”,电子邮件中的特殊字符也会变得混乱,如果我回显它们,它们看起来很好。

所以我不得不给我们这个函数

$message->setTextCharset('UTF-8')

$message->setHTMLCharset('UTF-8')

【讨论】:

【参考方案2】:

我怀疑您的问题与旧版本的 Exchange 有关。 Equal signs at end of line:

它可能不是带有高/低顺序字符或编码的引用可打印内容。此外,该页面的其他地方还写着:

注意: Exchange 中的错误(“功能”?) 可能会导致换行被替换 富文本邮件时用等号 已禁用。

【讨论】:

不错的发现!但是被替换的字符不是在行尾或换行符,所以我不确定这会把我留在哪里!【参考方案3】:

尝试使用 8 位编码发送:

$message->setTextEncoding(new EightBitEncoding());
$message->setHTMLEncoding(new EightBitEncoding());

【讨论】:

以上是关于正在接收通过 php5+htmlMimeMail 发送的电子邮件,其中随机字符替换为 =的主要内容,如果未能解决你的问题,请参考以下文章

JSON解析:来自PHP5(攻击数据库:mySQL)ios5 iphone

CentOS 通过yum来升级php到php5.6

CNMP系列CentOS7.0下安装PHP5.6.30服务

PHP:写入时复制和通过引用分配在 PHP5 和 PHP7 上执行不同

PHP5.6通过CURL上传图片@符无效的兼容问题

PHP接收表单数组过大导致的问题