PHPMailer发送邮件中文乱码的解决办法

2015 年 7 月 3 日4840

前面我们介绍了PHPMailer的使用方法和实例代码,有些朋友在使用的时候发现,发送中文邮件的时候,标题和内容中文都是乱码,这该如何解决呢?

让我们先看一下之前给出的实例代码mail.php文件:

<?php

require 'class.phpmailer.php';

$mail = new PHPMailer;

$mail->IsSMTP(); // Set mailer to use SMTP

$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server

$mail->SMTPAuth = true; // Enable SMTP authentication

$mail->Username = 'jswan'; // SMTP username

$mail->Password = 'secret'; // SMTP password

$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted

$mail->From = 'from@example.com';

$mail->FromName = 'Mailer';

$mail->AddAddress('josh@example.net', 'Josh Adams'); // Add a recipient

$mail->AddAddress('ellen@example.com'); // Name is optional

$mail->AddReplyTo('info@example.com', 'Information');

$mail->AddCC('cc@example.com');

$mail->AddBCC('bcc@example.com');

$mail->WordWrap = 50; // Set word wrap to 50 characters

$mail->AddAttachment('/var/tmp/file.tar.gz'); // Add attachments

$mail->AddAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name

$mail->IsHTML(true); // Set email format to HTML

$mail->Subject = 'Here is the subject';

$mail->Body = 'This is the HTML message body <b>in bold!</b>';

$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->Send()) {

echo 'Message could not be sent.';

echo 'Mailer Error: ' . $mail->ErrorInfo;

exit;

}

echo 'Message has been sent';

?>

解决的方法很简单,在代码中加上一个属性:

$mail->CharSet = "utf-8"; //设置字符集编码

如果是gb2312的编码,则是:

$mail->CharSet = "GB2312";

然后将文件保存成相应的编码格式即可。

0 0