PHPmailer 西里尔字符集问题

Posted

技术标签:

【中文标题】PHPmailer 西里尔字符集问题【英文标题】:PHPmailer cyrillic charset trouble 【发布时间】:2015-05-19 13:33:36 【问题描述】:

我认为我做的事情是正确的:

我正在指定 phpMailer 对象的字符集:$mail->CharSet = "UTF-8"; 邮件正文和 php 脚本的字符集也是 UTF-8

但是电子邮件到达时会出现这种错误(单词被带有“?”符号的黑色四分之一分隔:

опреСелени оÑ �ибка определения click to see the screenshot of example email

更新 1

在电子邮件的来源中发现了一些中国字形(但不是西里尔符号)

【问题讨论】:

如果您查看收到的消息的来源,这些损坏的字符是否与换行符一致?如果你稍微改变一下内容,损坏的字符会改变吗?您确定文本在传递给消息之前没有损坏吗? 这些字符没有损坏(我在发送电子邮件的同时输出到页面)。并且这个位置没有换行符。换行处理正确。 你没有回答我问的问题。查看收到消息的来源 - 我不是在谈论您的原始文本或您的网络输出,它们可能完全不同。 哇。我查看了 gmail 中的邮件来源,我很惊讶:来源西里尔符号就像中国字形。看看这些截图:normal mail body fragment 和 mail source 看起来不太好。您能否将其缩减为显示问题的最小示例并在您的问题中发布实际数据,然后我将有一些工作要做。 【参考方案1】:

类似于我的问题PHP ASCII to UTF-8 does not work

我发现当你从 sql 中提取数据时,你需要将其转换为 UTF-8

【讨论】:

【参考方案2】:

试试:

$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';

正如 user2354947 在PHPMailer character encoding issues 中所说的

必须在 PHPMailer() 之后输入 CharSet 定义

【讨论】:

您使用的引号与此无关。 Zivci,你在开玩笑吗? )) 当然,我在设置 CharSet 参数之前实例化了 PHPMailer

以上是关于PHPmailer 西里尔字符集问题的主要内容,如果未能解决你的问题,请参考以下文章

使用PHPMailer发送邮件

PHPMailer-master不发送邮件[重复]

phpmailer发送邮件

ThinkPHP 3.2 DEMO案例系列phpmailer批量发送邮件

西里尔字符的 DOMPDF 问题

Backand:西里尔字符串转向?