一般注册一个新的账号,都会收到一封官方的邮件,那么如何为自己的项目建立自动发送邮件的系统呢?
拥有自己的邮箱账号;
开启客户端授权码;
邮件信息乱码问题的解决;
一、拥有自己的邮箱账号。(本文以163邮箱为例)
二、开启客户端授权码,只有开启之后才能通过PHP代码,控制邮件的自动发送。
在PHP中,需要使用的密码就是,开启邮箱客户端授权后设置的密码。
三、PHPMailer的下载
github上有相关的使用说明
邮件发送代码如下:
require_once('class.phpmailer.php');
$mail = new PHPMailer(); //实例化
$mail->IsSMTP(); // 启用SMTP
$mail->Host = "smtp.163.com"; //SMTP服务器 以163邮箱为例子
$mail->Port = 25; //邮件发送端口
$mail->SMTPAuth = true; //启用SMTP认证
$mail->CharSet = "UTF-8"; //字符集
$mail->Encoding = "base64"; //编码方式
$mail->Username = "xxx@163.com"; //你的邮箱
$mail->Password = "xxx"; //你的授权码
$mail->Subject = "你好"; //邮件标题
$mail->From = "xxx@163.com"; //发件人地址(也就是你的邮箱)
$mail->FromName = "xxxx"; //发件人姓名
$address = "xxx@163.com";//收件人email
$mail->AddAddress($address, "xxx");//添加收件人(地址,昵称)
$mail->AddAttachment('xxx.xls','xxx.xls'); // 添加附件,并指定名称
$mail->IsHTML(true); //支持html格式内容
$mail->AddEmbeddedImage("xxx.jpg", "my-attach", "xxx.jpg"); //设置邮件中的图片
$mail->Body = 'xxx '; //邮件主体内容
//发送
if(!$mail->Send()) {
echo "发送失败: " . $mail->ErrorInfo;
} else {
echo "发送成功!";
}
?>
四、邮件信息乱码问题的解决:
a.解决非标题汉字乱码
在PHPMailer 库文件class.phpmailer.php中,
找到 public $CharSet = 'iso-8859-1';
改成 public $CharSet = 'UTF-8';
并且 把文件保存为UTF-8格式。
b.解决标题汉字乱码
$mail->Subject ="=?utf-8?B?" . base64_encode(" 你的标题内容 ") . "?=";