代码:
$mail = new PHPMailer();
$mail->isSendmail();
$mail->setFrom('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="90f9fef6ffd0e2f5fef5beffe2f7" rel="noreferrer noopener nofollow">[email protected]</a>', 'Rene');
$mail->addAddress($_POST['email'],$_POST['name']);
$mail->Subject = 'Confirmación';
我使用了自己的“ó”,主题将显示为:Confirmación 在我的电子邮件帐户中。我也尝试过:
$mail = new PHPMailer();
$mail->isSendmail();
$mail->setFrom('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4821262e27083a2d262d66273a2f" rel="noreferrer noopener nofollow">[email protected]</a>', 'Rene');
$mail->addAddress($_POST['email'],$_POST['name']);
$mail->Subject = 'Confirmación';
它看起来像:Confirmaci & o a cut e;n。 我该如何解决这些问题。它需要出现在电子邮件收件箱中,例如:Confirmación
最佳答案
您似乎遇到了第一个字符编码错误。恭喜!你已经迈出了第一步,进入了一个充满严重遗产和巨大错误的世界,这些错误将永远被保留。让我们开始吧。
Ive used the own "ó" and the subject will appear as: Confirmación in my email account.
在我开始解释为什么会发生这种情况之前,我想澄清一些事情:您有充分的理由相信这会起作用。在一个完美的世界里,它会的。你的工具让你失败了。
当您在 PHP 源代码中输入 'ó'
时,您实际上并没有告诉 PHP 您认为自己是什么。你想说的是,“给我一个包含代码点 U+00F3 带有尖音的拉丁文小写字母 O 的字符串”。不过,PHP 不支持 Unicode;它的字符串实际上是字节向量。 PHP 听到的是“给我字节向量
$ echo 'ó' | iconv -f cp1252
ó
这可能是 PHPMailer 的行为,但 PHPMailer::$Subject
的文档仅说明
The Subject of the message.
所以这并不是一个很大的帮助。
好吧,我在 PHPMailer 错误跟踪器上进行了一些研究,我发现了 this conversation 。那里有很多东西不适用于这种情况,但我确实设法了解到 PHPMailer::$CharSet
属性也适用于 header 。 (文档:“消息的字符集。”)因此,针对您的情况的正确解决方法是添加行
$mail->CharSet = 'UTF-8';
到第一个脚本的底部。
关于php - 在 phpmailer 主题中使用 Acute 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303152/