正在接收通过 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