[英]PHPMailer character encoding issues
我尝试使用PHPMailer发送注册、激活。 等邮件给用户:
require("class.phpmailer.php");
$mail -> charSet = "UTF-8";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.mydomain.org";
$mail->From = "name@mydomain.org";
$mail->SMTPAuth = true;
$mail->Username ="username";
$mail->Password="passw";
//$mail->FromName = $header;
$mail->FromName = mb_convert_encoding($header, "UTF-8", "auto");
$mail->AddAddress($emladd);
$mail->AddAddress("mytest@gmail.com");
$mail->AddBCC('mytest2@mydomain.org', 'firstadd');
$mail->Subject = $sub;
$mail->Body = $message;
$mail->WordWrap = 50;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
$message
包含拉丁字符。 不幸的是,所有网络邮件(gmail、webmail.mydomain.org、emailaddress.domain.xx)都使用不同的编码。
如何强制使用 UTF-8 编码以在所有邮箱上显示完全相同的邮件?
我试图转换邮件标题宽度mb_convert_encoding()
,但没有运气。
如果您 100% 确定 $message 包含 ISO-8859-1,您可以使用utf8_encode正如大卫所说的那样。 否则在 $message 上使用mb_detect_encoding和mb_convert_encoding 。
还要注意的是
$mail -> charSet = "UTF-8";
应改为:
$mail->CharSet = 'UTF-8';
并放置在类的实例化之后(在new
)。 属性区分大小写! 请参阅列表和确切拼写的PHPMailer 文档。
此外,PHPMailer 的默认编码是8bit
,这对于 UTF-8 数据可能会出现问题。 要解决此问题,您可以执行以下操作:
$mail->Encoding = 'base64';
请注意,在这些情况下, 'quoted-printable'
也可能会起作用(甚至可能是'binary'
)。 有关更多详细信息,您可以阅读RFC1341 - Content-Transfer-Encoding Header Field 。
$mail -> CharSet = "UTF-8";
$mail = new PHPMailer();
行$mail -> CharSet = "UTF-8";
必须在$mail = new PHPMailer();
并且没有空格!
试试这个
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
我自己这样工作
$mail->FromName = utf8_decode($_POST['name']);
很抱歉在聚会上迟到了。 根据您的服务器配置,您可能需要严格使用小写字母utf-8 指定字符,否则将被忽略。 如果您最终在这里寻找解决方案并且上述答案都没有帮助,请尝试此操作:
$mail->CharSet = "UTF-8";
应替换为:
$mail->CharSet = "utf-8";
我得到了ó 在 $mail->Subject /w PHPMailer 中。
所以对我来说,完整的解决方案是:
// Your Subject with tildes. Example.
$someSubjectWithTildes = 'Subscripción España';
$mailer->CharSet = 'UTF-8';
$mailer->Encoding = 'quoted-printable';
$mailer->Subject = html_entity_decode($someSubjectWithTildes);
希望能帮助到你。
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->Encoding = "16bit";
当以上都不起作用时,仍然邮件看起来像ª הודפסה ×•× ×©×œ
:
$mail->addCustomHeader('Content-Type', 'text/plain;charset=utf-8');
$mail->Subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';;
@ $mail -> charSet = "UTF-8";
---这行应该在
$mail = new PHPMailer(); line.
pff ..
是的,这是正确的。 您必须将其放置在对象实例化之后。
最简单的方法是将 CharSet 设置为 UTF-8
$mail->CharSet = "UTF-8"
为避免使用 PHPMailer 类发送电子邮件时出现字符编码问题,我们可以使用“CharSet”参数将其配置为使用 UTF-8 字符编码发送,如下面的 PHP 代码所示:
$mail = new PHPMailer();
$mail->From = 'midireccion@email.com';
$mail->FromName = 'Mi nombre';
$mail->AddAddress('emaildestino@email.com');
$mail->Subject = 'Prueba';
$mail->Body = '';
$mail->IsHTML(true);
// Active condition utf-8
$mail->CharSet = 'UTF-8';
// Send mail
$mail->Send();
如果您的邮件使用Latin1,则无论如何都可以使用utf8_encode对我有用。
您可以同时使用:
$mail->CharSet = 'UTF-8';
$mail->CharSet = 'utf-8';
如果要更改文本方向,可以使用:
$mail->msgHTML('<div style=" direction: rtl;">نص تجريبي</div>');
$mail = new PHPMailer();
$mail -> CharSet = "UTF-8";
$ mail-> charSet =“ UTF-8”; ---这行应该在$ mail = new PHPMailer();下; 线。
pff ..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.