一、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 = '[email protected]'; // 这个就是之前得到的授权码,一共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('[email protected]', '林深时见禄'); // $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 "发送成功"; } };