PHPMailer字符编码问题

我尝试使用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包含拉丁字符。 不幸的是,所有的webmail(gmail,webmail.mydomain.org,emailaddress.domain.xx)都使用不同的编码。

如何强制使用UTF-8编码在所有邮箱上显示我的邮件完全相同?

我尝试转换邮件头宽度mb_convert_encoding() ,但没有运气。

如果你100%确定$ message包含ISO-8859-1,你可以像David说的那样使用utf8_encode 。 否则在$ message上使用mb_detect_encoding和mb_convert_encoding 。

另外请注意

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

应该换成:

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

放置该类的实例之后 (在“新”之后)。 属性是区分大小写的! 查看PHPMailer文档的列表和确切的拼写。

 $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']); 

http://php.net/manual/en/function.utf8-decode.php

 $mail = new PHPMailer(); $mail->CharSet = "UTF-8"; $mail->Encoding = "16bit"; 

对不起,在派对上迟到了。 根据您的服务器configuration,您可能需要严格使用小写字母 utf-8来指定字符,否则将被忽略。 试试这个,如果你最终在这里寻找解决scheme,上面的答案都没有帮助:

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

应该换成:

 $mail->CharSet = "utf-8"; 

如果你的消息使用Latin1,那么你可以使用utf8_encode 。

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

—这一行应该在下面

$mail = new PHPMailer(); line.

PFF ..


是的,这是正确的。 你必须把它放在对象实例化之后。

最简单的方法,并将帮助您将CharSet设置为UTF-8

 $mail->CharSet = "UTF-8" 

为了避免使用PHPMailer类发送电子邮件中的字符编码问题,我们可以使用“CharSet”参数将其configuration为使用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(); 
 $mail = new PHPMailer(); $mail -> CharSet = "UTF-8"; 

$ mail – > charSet =“UTF-8”; —这行应该在$ mail = new PHPMailer()下面。 线。

PFF ..