我尝试使用PHPMailer发送注册、激活。等邮件给用户:
require("class.phpmailer.php");
$mail -> charSet = "UTF-8";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.mydomain.org";
$mail->From = "[email protected]";
$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("[email protected]");
$mail->AddBCC('[email protected]', 'firstadd');
$mail->Subject = $sub;
$mail->Body = $message;
$mail->WordWrap = 50;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
The $message
包含拉丁字符。不幸的是,所有网络邮件(gmail、webmail.mydomain.org、emailaddress.domain.xx)都使用不同的编码。
如何强制使用 UTF-8 编码在所有邮箱上以完全相同的方式显示我的邮件?
我尝试转换邮件标题宽度mb_convert_encoding()
,但没有运气。
如果您 100% 确定 $message 包含 ISO-8859-1 您可以使用utf8_编码正如大卫所说。否则使用mb_检测_编码 and mb_convert_encoding在 $ 消息上。
另请注意
$mail -> charSet = "UTF-8";
应替换为:
$mail->CharSet = "UTF-8";
And placed after类的实例化(之后new
)。属性区分大小写!请参阅PHPMailer 文档获取列表和准确的拼写。
PHPMailer的默认编码也是8bit
这对于 UTF-8 数据可能会出现问题。要解决此问题,您可以执行以下操作:
$mail->Encoding = 'base64';
请注意'quoted-printable'
在这些情况下可能也会起作用(甚至可能'binary'
)。欲了解更多详细信息,您可以阅读RFC1341 - 内容传输编码标头字段.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)