发布日期:2018-03-26
PHPMailer字符编码问题+ 查看更多
PHPMailer字符编码问题
+ 查看更多
发布日期:2018-03-10 15:15
分类:PHP
浏览次数:155
我试着用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;
}
$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包含拉丁字符。 不幸的是,所有webmail(gmail,webmail.mydomain.org,emailaddress.domain.xx)使用不同的编码。
如何强制使用UTF-8编码来让我的邮件在所有邮箱上一致显示?
我尝试转换邮件头宽度mb_convert_encoding(),但很不幸……
如何强制使用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文档列表和确切的拼写。