PHP 使用 PHPMailer 发送邮件
最近准备写一个个人博客,博客的用户注册和找回密码都需要邮件验证。PHP 虽然提供了 mail
函数来发送邮件,但是 mail
函数的功能限制较多,只能发送普通文本,如果要发送 HTML 或附件就比较麻烦。
在逛 Github 的时候看到一个功能比较强大的邮件发送类 PHPMailer ,很多著名的 PHP 开源项目 比如 WordPress、Drupal、SugarCRM 也都在用 PHPMailer 发送邮件。
下面就简单写一下 PHPMailer 发送邮件的过程。
PHPMailer 的 Github 地址是 https://github.com/PHPMailer/PHPMailer 。
可以使用 Composer 安装,也可以手动下载项目引入,我这里是手动下载项目引入。
发送邮件
发送邮件相关的代码都在 src
目录中,language
目录中包含了不同语言的报错信息。
下面使用 SMTP 发送邮件:
<?php
use PHPMailer\PHPMailer\PHPMailer; // 设置命名空间
use PHPMailer\PHPMailer\SMTP; // 设置命名空间
use PHPMailer\PHPMailer\Exception; // 设置命名空间
require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';
$mail = new PHPMailer(true); // 创建邮件发送对象
try {
// 服务器相关设置
$mail->SMTPDebug = SMTP::DEBUG_SERVER; // 输出服务器日志
$mail->isSMTP(); // 使用 SMTP 来发送邮件
$mail->SMTPAuth = true; // 启用 SMTP 身份验证
$mail->Host = 'smtp.qq.com'; // SMTP 服务器地址
$mail->Username = 'email@misterma.com'; // SMTP 用户名
$mail->Password = 'wvikg5hyswveche'; // 密码
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // 使用 TLS 加密
$mail->Port = '25'; // SMTP 端口
// 发件人和收件人
$mail->setFrom('email@misterma.com', 'Mr. Ma'); // 发件人
$mail->addAddress('usmmiuy@gmail.com', 'Joe User'); // 添加收件人
// 邮件标题和内容
$mail->isHTML(true); // 邮件格式设置为 HTML
$mail->Subject = '这是邮件标题'; // 邮件标题
$mail->Body = '这是 HTML 内容 <b>加粗的文字</b>'; // HTML 内容
$mail->AltBody = '文本内容'; // 纯文本
$mail->addAttachment('tutorial.txt'); // 添加附件
$mail->send(); // 发送
echo '发送完成';
} catch (Exception $e) {
// 输出错误信息
echo '错误:' . $mail->ErrorInfo;
}
我上面使用的是 QQ邮箱的 SMTP 服务。
一些属性和方法说明
下面是服务器相关的一些属性说明:
$mail->Host
:设置 SMTP 服务器地址,不同邮箱服务的 SMTP 地址也会不一样,下面会有常用的邮箱服务的 SMTP 地址。$mail->Username
:SMPT 用户名,一般也就是发送邮件的邮箱地址。$mail->Password
:SMTP 的用户密码,有的邮箱服务可以直接使用邮箱密码,有的邮箱在开启 SMTP 后会生成一个独立的授权码。$mail->Port
:SMTP 服务器端口,不同邮箱服务的端口也会不一样,下面会写常用的邮箱的 SMTP 端口。
下面是发件人和收件人相关的一些方法说明:
$mail->setFrom()
:发件人,第一个参数是发件人邮箱地址,第二个参数是发件人姓名。$mail->addAddress()
:添加收件人,第一个参数是收件人的邮箱地址,第二个参数是收件人的姓名,收件人可添加多个。
下面是邮件标题和邮件内容相关的一些方法说明:
$mail->isHTML()
:使用 HTML 格式。$mail->Subject
:邮件的标题或主题。$mail->Body
:邮件内容。$mail->AltBody
:邮件内容(纯文本)。$mail->addAttachment
:添加附件,参数就是文件名,附件可以添加多个。
常用邮件服务的 SMTP 地址和端口
下面是一些常用的邮箱服务的 SMTP 地址和端口:
服务商 | SMTP 地址 | SMTP 端口 |
---|---|---|
QQ邮箱 | smtp.qq.com | 25 |
网易126邮箱 | smtp.126.com | 25 |
网易163邮箱 | smtp.163.com | 25 |
新浪邮箱 | smtp.sina.cn | 25 |
Gmail | smtp.gmail.com | 465 |
雅虎邮箱 | smtp.mail.yahoo.com | 465 |
Foxmail邮箱 可以直接使用 QQ邮箱 的 SMTP 地址和端口。
以上就是 PHPMailer 发送邮件的简单演示,PHPMailer 还有很多选项可以设置。如果要查看更多的设置选项可以访问官方的 API 文档 。
版权声明:本文为原创文章,版权归 Mr. Ma's Blog 所有,转载请联系博主获得授权。
本文地址:https://www.misterma.com/archives/866/
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。
果然看你的文章,烧脑壳,哈哈
哈哈,看来需要换一下文章类型了