我try 使用PHPMailer发送注册、激活.etc向用户发送邮件:

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(),但没有成功.

推荐答案

如果您utf8_encode%确定$MESSAGE包含ISO-8859-1,您可以像David说的那样使用utf8_encode.否则,在$message上使用mb_detect_encodingmb_convert_encoding.

还要注意

$mail -> charSet = "UTF-8"; 

应替换为:

$mail->CharSet = 'UTF-8';

And放置after类的实例化(在new之后).属性区分大小写!请参见列表中的PHPMailer doc&;拼写准确.

此外,PHPMailer的默认编码是8bit,这对于UTF-8数据可能有问题.要解决此问题,您可以执行以下操作:

$mail->Encoding = 'base64';

请注意,在这些情况下,'quoted-printable'可能也会起作用(甚至可能是'binary').有关更多详细信息,请阅读RFC1341 - Content-Transfer-Encoding Header Field.

Php相关问答推荐

PHP Mail到Googlmail.仅SPF

PHPHPML用现有的HTML文件上的文本替换 node 值

Woocommerce经常一起购买(添加到购物车)按钮重命名

使用额外的输入字段自定义WooCommerce单个产品

Woocommerce自定义变体html表仅显示带值的列

多行PHP属性声明中是否允许单行注释

如何从WooCommerce checkout 帐单邮箱字段中删除星号?

Symfony框架锁定和.env设置

未检测到laravel控制器

Wordpress,配置一周第一天选项

Font Awesome 加载图标未显示在 WooCommerce 管理员列表中

WooCommerce:如果订单总数为零,则隐藏本地取货运输选项

我不明白为什么我收到未定义的数组键异常错误 - Laravel 9 PHP 8

使用自定义插件中的 WooCommerce 模板发送自定义邮箱

致命错误:未捕获 Google_Exception:客户端机密 JSON 文件无效.在 /somepath/lib/vendor/google/apiclient/src/Google/Client.php

WooCommerce单个产品页面上启用额外选项卡的产品元框字段

ACF 更新字段功能不更新 WordPress 中的任何数据

如何修复正则表达式以在换行符后查找非数值

使用 RSA 2048 公钥验证 RSA PKCS#1v1.5 SHA 256 签名

如何在 Laravel 中验证多个输入?