我正在尝试使用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上,
案例3:某个日文字符出现问号。
任何正文都可以向我显示PHP邮件程序的正确设置,以便它可以发送收件人中显示的未知字符的日文字符邮件吗?
答案 0 :(得分:0)
查看浏览器时带有问号的黑色钻石意味着该角色没有glyph。该字符可能有效但无法显示。
换句话说,它可能是系统进行显示而不是程序的限制。
但是你应该检查你的程序。在十六进制编辑器中打开电子邮件,验证代码是否符合您的预期,并与您指定的编码相匹配。
答案 1 :(得分:0)
您自己编码,然后PHPMailer将再次执行此操作。设置主题和正文时,只需在正确的字符集中使用原始文本,不要自己编码。您还使用不适合7位的字符集设置7位编码。如果您的文字已经是UTF-8,为什么不坚持使用? UTF-8处理通常比8位字符集更可靠。