一、PHPMailer概述
1.1PHPMailer是什么
PHPMailer 是一个非常强大的 php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。
1.2PHPMailer优点
- 1、在邮件中包含多个 TO、CC、BCC 和 REPLY-TO。
- 2、平台应用广泛,支持的 SMTP 服务器包括 Sendmail、qmail、Postfix、Gmail、Imail、Exchange 等等。
- 3、支持嵌入图像,附件,HTML 邮件。
- 4、可靠的强大的调试功能。
- 5、支持 SMTP 认证。
- 6、自定义邮件头。
- 7、支持 8bit、base64、binary 和 quoted-printable 编码。
1.3下载 PHPMailer
从 github 上下载: https://github.com/PHPMailer/PHPMailer/
二、准备工作
2.1PHP环境准备
确保PHP环境开启openssl,如果未开启,检查ext文件夹下是否有php_openssl.dll、php_sockets.dll两个dll,php.ini文件中把前面的;去掉
2.2开启QQ邮箱的 SMTP
服务(其他主流邮箱也一样支持)
邮箱名称下面点击设置
点击账户
拉到下面,开启POP3/SMTP服务、IMAP/SMTP服务以及生成授权码
2.3下载PHPMailer源码
Github下载地址:https://github.com/PHPMailer/PHPMailer
需要用到的两个类分别是PHPMailer、SMTP,将这两个文件拷到项目中
三、完整代码
/*发送邮件方法
*@param $to:接收者 $title:标题 $content:邮件内容
*@return bool true:发送成功 false:发送失败
*/
function sendMail($to,$title,$content) {
// 这个PHPMailer 就是之前从 Github上下载下来的那个项目
require 'src/PHPMailer.php';
$mail = new PHPMailer;
// 是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式,
// 可选择的值有 1 、 2 、 3
// $mail->SMTPDebug = 2;
//使用smtp鉴权方式发送邮件
$mail->isSMTP();
//smtp需要鉴权 这个必须是true
$mail->SMTPAuth = true;
// qq 邮箱的 smtp服务器地址,这里当然也可以写其他的 smtp服务器地址
$mail->Host = 'smtp.qq.com';
//smtp登录的账号 这里填入字符串格式的qq号即可
$mail->Username = '1182xxxxx@qq.com';
// 这个就是之前得到的授权码,一共16位
$mail->Password = 'nioxunyqzmrqbaeb';
//设置使用ssl加密方式登录鉴权
$mail->SMTPSecure = 'ssl';
// //设置ssl连接smtp服务器的远程服务器端口号,可选465或587
$mail->Port = 465;
//设置smtp的helo消息头 这个可有可无 内容任意
// $mail->Helo = 'Hello smtp.qq.com Server';
//设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名
// $mail->Hostname = 'http://www.lsgogroup.com';
//设置发送的邮件的编码 也可选 GB2312
$mail->CharSet = 'UTF-8';
$mail->setFrom('1182xxxxx@qq.com', '林深时见禄');
// $to 为收件人的邮箱地址,如果想一次性发送向多个邮箱地址,则只需要将下面这个方法多次调用即可
$mail->addAddress($to);
//邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
$mail->isHTML(true);
// 该邮件的主题
$mail->Subject = $title;
// 该邮件的正文内容
$mail->Body = $content;
//为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
$mail->addAttachment('E:/370205030101010301_20200903142139_4.jpg','mm.jpg');
//同样该方法可以多次调用 上传多个附件
// $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');
// 使用 send() 方法发送邮件
if(!$mail->send()) {
return 'Mailer Error: ' . $mail->ErrorInfo;
} else {
return "发送成功";
}
};