PHPmailer 日语字符

PHPmailer Japanese Character

我正在尝试使用 PHPmailer 发送一封带有日文字符的电子邮件, 这是我的职能:

function sendMail()
{
  mb_language('ja');
  mb_internal_encoding('UTF-8');

  $mail = new PHPMailer();

  $mail->isSMTP();
  $mail->SMTPAuth      = true;
  $mail->Host          = EMAIL_HOST; 
  $mail->Port          = EMAIL_PORT;
  $mail->Username      = EMAIL_USERNAME;
  $mail->Password      = EMAIL_PASSWORD;
  $mail->SMTPKeepAlive = true;
  $mail->Mailer        = 'smtp';
  $mail->CharSet       = 'ISO-2022-JP';
  $mail->Encoding      = "7bit"; 
  $mail->SMTPDebug     = 0;
  $mail->From          = EMAIL_SET_FROM_EMAIL;
  $mail->FromName      = mb_encode_mimeheader(EMAIL_SET_FROM_NAME, "ISO-2022-JP-MS");
  $mail->addAddress($this->to);

  if (!empty($this->replyTo)) {
    $mail->addReplyTo($this->replyTo);
  }

  $mail->isHTML(true);
  $mail->Subject = mb_encode_mimeheader($this->subject, "ISO-2022-JP-MS");
  $mail->Body    = mb_convert_encoding($this->body, "ISO-2022-JP-MS", "UTF-8");

  $isSend = $mail->send();

  if (!$isSend) {
    throw new exception(__METHOD__ . '() ' . $mail->ErrorInfo);
  }
}

在收件人中,带有日语字符的电子邮件正文有时会像这样损坏:

案例 1 : エ %j%" : A

案例2:我朋友的日本笔记本电脑显示几个带有问号的黑色菱形字符。它在 Gmail 上,

案例三:日文中出现问号

任何人都可以告诉我 PHP 邮件程序的正确设置,以便它可以发送收件人不显示未知字符的日文字符邮件吗?

查看浏览器上带有问号的黑色菱形表示该字符没有 glyph。该字符可能有效但无法显示。

换句话说,这可能是系统进行显示的限制,而不是您的程序。

不过你应该检查你的程序。在十六进制编辑器中打开电子邮件并验证代码是否符合您的预期并与您指定的编码相匹配。

您正在自己编码,然后 PHPMailer 将再次进行编码。设置主题和正文时,只需使用正确字符集中的原始文本,不要自己编码。您还使用不适合 7 位的字符集设置 7 位编码。如果您的文本已经是 UTF-8 格式,为什么不坚持使用它呢? UTF-8 处理通常比 8 位字符集更可靠。