phpMailer 是一个非常强大的 php 发送邮件扩展包,可以设定发送邮件地址、回复地址、邮件主题、html邮件内容和上传附件等,使用起来非常方便。它目前有着有近 4 千万的下载量,是 PHP 开发者实现邮件发送功能的首选扩展包
它对 PHP 版本的要求也很低,只要 PHP 版本大于等于 5.5 就能使用,是一个非常优秀的邮件发送扩展包
Packagist 传送地址 : [https://packagist.org/packages/phpmailer/phpmailer](https://packagist.org/packages/phpmailer/phpmailer)
composer require phpmailer/phpmailer
#### 2. 发送邮件代码示例
下面是发送邮件比较完整的代码,以 QQ邮箱作为 SMTP 服务器发送邮件
```php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
try {
$mail = new PHPMailer(true);
//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->CharSet = 'UTF-8';
# 服务器设置
//启用详细调试输出
//$mail->SMTPDebug = SMTP::DEBUG_SERVER;
// 使用SMTP发送
$mail->isSMTP();
//要发送的SMTP服务器
$mail->Host = 'smtp.qq.com';
//启用SMTP身份验证
$mail->SMTPAuth = true;
//SMTP用户名
$mail->Username = '
[email protected]';
//SMTP密码
$mail->Password = 'mftcnkcrrcixxxxx';
//启用隐式TLS加密
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
//要连接到的TCP端口
$mail->Port = 465;
#发件人信息
$mail->setFrom('
[email protected]', '又拍云');
#收件人列表,可将邮件发送给多个邮箱,命令格式:
//$mail->addAddress('收件人邮箱', '姓名');
$mail->addAddress('
[email protected]', '李知恩');
$mail->addAddress('
[email protected]', '灰太狼的羊');
#回复地址
$mail->addReplyTo('
[email protected]', '李钟硕');
#抄送人列表
$mail->addCC('
[email protected]', '你的欲梦');
# 邮件内容
//电子邮件格式设置为HTML
$mail->isHTML(true);
//邮件标题
$mail->Subject = '又拍云密码重置校验';
//邮件内容
$code = mt_rand(100000, 999999);
$mail->Body = "您的验证码为:
{$code}";
//这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
$mail->AltBody = "您的验证码为: {$code}";
#发送邮件
$mail->send();
echo '邮件发送成功';
} catch (\Exception $e) {
// $e->getMessage() // 异常信息
// $mail->ErrorInfo // 邮件发送失败错误信息
echo "邮件发送失败: {$mail->ErrorInfo}";
#### 3. 邮件内容样式模板
邮件的内容一般都不是纯文本,会具有一定的样式,如下图所示,那么具有内容的样式应该怎么来做呢 ?
![](https://img.itqaq.com/art/content/ec361964d8814feecedd6ee0147e52c6.png)
发送邮件时,邮件内容支持设置带有 HTML 标签,我们只需要传入带有样式的 HTML 内容
可以提前编写好样式,最后压缩为一行,部分内容作为变量(如: 验证码),然后作为邮件内容发送
在线压缩 HTML 代码 : [https://tool.lu/html](https://tool.lu/html)
```html
密码重置
验证码: 123456
当我们不想自己编写邮件内容模板样式时,可以扒取其他平台的邮件模板
扒取又拍云邮件模板举例 : 我要做一个通过邮件找回密码的功能,又不想自己写这个邮件模板样式,于是我找到 **又拍云** 的重置密码邮件模板,扒取下来,在它的基础上进行修改,省时省力,何乐而不为
在又拍云平台重置密码,得到一个重置密码的邮件,在控制台查看元素可发现:邮件内容为下图所标记的部分,将元素复制出来后进行修改即可
![](https://img.itqaq.com/art/content/ee291687dd3d444bbb42246f31d5de11.png)
#### 4. 验证码邮件模板
##### 又拍云验证码模板
![](https://img.itqaq.com/art/content/46513eed88825e97ec90e8c4fc0edbac.png)
```html
亲爱的 duxiu,
您正在通过邮件找回又拍云密码。
请在重置密码的页面中输入以下 验证码
和新的密码,完成密码重设:
style="font-size: 20px; color: #777; line-height: 50px; border: 1px solid #24b0cf; background: #fafafa; text-align: center;">
657475
(此验证码有效时间为 60 分钟,若超时请重新获取邮件)
如果您要放弃重设密码,或者未曾申请密码重设,请忽略此邮件。
为了您的账户安全,请您注意对此邮件内容保密。