非英文字符在 gmail、yahoo via phpMailer 中显示问题 class

non-English characters display issue in gmail, yahoo via phpMailer class

我使用 phpMailer(GitHub 中的今天版本)从我的 noreply@host.com.

发送自动 smtp 激活邮件

我在 gmail 和 yahoo 上试过了。两者都解释了如下所示的字符。

nice      unwanted (realized)
Ç    ->     Ç
ı    ->     Ä
ş    ->     Åž

邮寄流程顺序为:

  1. "签名页"(具有utf-8编码的形式),然后
  2. "assess_from_sign.php"(纯php没有任何编码命令。实际 发送或失败过程在此),则
  3. "通知页面"(通知用户结果)

我在邮件正文中的消息以 Dear $_POST['username']

开头

我可以对 assess_from_sign.php 页面中的 $_POST['username'] 变量应用什么,这样即使非英语字符看起来也完全像他们自己的语言。

注意:所有请求都重定向到我站点中的 index.php 页面,它有适用于所有页面的 mb_internal_encoding("UTF-8"); 命令。

谢谢,问候

代码的所有方面都设置为相同的特定字符集,这一点很重要。我推荐你已经开始使用的 UTF-8,它涵盖了你需要的大多数字符。

下面是 "checklist" 应设置为 UTF-8 的内容。

  • PHP header - 这必须放在浏览器的任何输出之前,并且应该放在所有 .php 的顶部页数:header('Content-Type: text/html; charset=utf-8');

  • HTML header - 这也应该在所有包含 HTML 的页面中,并将其放在 <head> 标签内: <meta charset=utf-8" />

  • PHPMailer Object - 通过添加
    指定 PHPMailer object 的字符集 $mail->CharSet = 'UTF-8';,其中 $mail 是 object 本身。

  • File-encoding:文件本身应转换为 UTF8 字符集(特别是 UTF8 w/o BOM)。这因您使用的文本编辑器类型而有所不同,但在 Notepad++ 中它是格式 -> 转换为 UTF8(w/o 字节顺序标记)。

您的代码的其他方面可能需要设置为 UTF8 字符集(数据库等),但这应该涵盖 mail-properties。

你也可以参考UTF-8 all the way through.