PHPMailer下载和使用教程(附源码包,非常详细)
PHPMailer 是一款专为 PHP 语言编写的电子邮件发送库,它封装了 SMTP、Sendmail、qmail 等多种传输方式,让开发者不必关心底层协议细节,就能在 Web 应用里快速实现“注册确认、密码重置、订单通知、营销群发”等邮件场景。
与 PHP 内置的 mail() 函数相比,PHPMailer 提供了 SMTP 认证、TLS/SSL 加密、HTML 格式、附件、抄送/密送、嵌入式图片、多编码支持等丰富功能,被 WordPress、Drupal、Yii、Joomla 等主流开源项目选为默认邮件引擎,目前 Packagist 累计下载量已接近四千万次。
PHPMailer 完全开源免费,代码托管在 GitHub,经社区多年迭代,6.x 版本已全面兼容 PHP 5.5 至 PHP 8.3,并持续维护安全更新。
由于 PHPMailer 只依赖 PHP 扩展“mbstring”与“openssl”,所以能跑在 Windows、Linux、macOS 任何 Web 服务器上,无需额外二进制组件。
1、直接从 GitHub 上下载,下载地址为:
2、使用 composer 下载 Composer,下载地址为:
① 直接点击 Next:
② 点击 browse 打开 php 文件夹下的 php.exe,然后点击 Next:
③ 后续一直按 Next,直到出现下图的界面,表示安装完成:
④ 按组合键 win + R 输入 cmd 出现命令提示框,输入 composer 回车,看到下图的输出信息证明安装成功:

3) 利用 Composer 安装 PHPMailer,按组合键 win + R 输入 cmd 出现命令提示框,输入下面指令:
网易邮箱配置如下:
QQ 邮箱相关配置如下:
下面给出 php 代码示例:
与 PHP 内置的 mail() 函数相比,PHPMailer 提供了 SMTP 认证、TLS/SSL 加密、HTML 格式、附件、抄送/密送、嵌入式图片、多编码支持等丰富功能,被 WordPress、Drupal、Yii、Joomla 等主流开源项目选为默认邮件引擎,目前 Packagist 累计下载量已接近四千万次。
PHPMailer 完全开源免费,代码托管在 GitHub,经社区多年迭代,6.x 版本已全面兼容 PHP 5.5 至 PHP 8.3,并持续维护安全更新。
由于 PHPMailer 只依赖 PHP 扩展“mbstring”与“openssl”,所以能跑在 Windows、Linux、macOS 任何 Web 服务器上,无需额外二进制组件。
下载PHPMailer
下载 PHPMailer 的方式有以下两种:1、直接从 GitHub 上下载,下载地址为:
网盘里提供了最新版的 PHPMailer。
2、使用 composer 下载 Composer,下载地址为:
下载会获得一个名为 "Composer-Setup.exe" 的安装程序,双击它开始安装:
① 直接点击 Next:

② 点击 browse 打开 php 文件夹下的 php.exe,然后点击 Next:

③ 后续一直按 Next,直到出现下图的界面,表示安装完成:

④ 按组合键 win + R 输入 cmd 出现命令提示框,输入 composer 回车,看到下图的输出信息证明安装成功:

composer require phpmailer/phpmailer
即可成功下载安装 PHPMailer。使用PHPMailer
使用 PHPMailer 发送邮件之前,需要拥有自己的邮件服务器,测试的时候其实用自己申请的免费邮箱最方便了,不需要自己再搭建服务器了,可能要配置邮箱的 SMTP 服务,大部分公共邮箱(163、qq 等)为了安全默认是关闭的。网易邮箱配置如下:
服务器名称 | 服务器地址 | SSL协议端口号 | 非SSL协议端口号 |
---|---|---|---|
IMAP | imap.163.com | 993 | 143 |
SMTP | smtp.163.com | 465/994 | 25 |
POP3 | pop.163.com | 995 | 110 |
QQ 邮箱相关配置如下:
邮箱 | POP3服务器(端口995) | SMTP服务器(端口465或587) |
---|---|---|
qq.com | pop.qq.com | smtp.qq.com |
下面给出 php 代码示例:
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require './src/Exception.php'; require './src/PHPMailer.php'; require './src/SMTP.php'; $mail = new PHPMailer(true); // Passing `true` enables exceptions try { //服务器配置 $mail->CharSet ="UTF-8"; //设定邮件编码 $mail->SMTPDebug = 0; // 调试模式输出 $mail->isSMTP(); // 使用SMTP $mail->Host = 'smtp.163.com'; // SMTP服务器 $mail->SMTPAuth = true; // 允许 SMTP 认证 $mail->Username = '邮箱用户名'; // SMTP 用户名 即邮箱的用户名 $mail->Password = '密码或者授权码'; // SMTP 密码 部分邮箱是授权码(例如163邮箱) $mail->SMTPSecure = 'ssl'; // 允许 TLS 或者ssl协议 $mail->Port = 465; // 服务器端口 25 或者465 具体要看邮箱服务器支持 $mail->setFrom('xxxx@163.com', 'Mailer'); //发件人 $mail->addAddress('aaaa@126.com', 'Joe'); // 收件人 //$mail->addAddress('ellen@example.com'); // 可添加多个收件人 $mail->addReplyTo('xxxx@163.com', 'info'); //回复的时候回复给哪个邮箱 建议和发件人一致 //$mail->addCC('cc@example.com'); //抄送 //$mail->addBCC('bcc@example.com'); //密送 //发送附件 // $mail->addAttachment('../xy.zip'); // 添加附件 // $mail->addAttachment('../thumb-1.jpg', 'new.jpg'); // 发送附件并且重命名 //Content $mail->isHTML(true); // 是否以HTML文档格式发送 发送后客户端可直接显示对应HTML内容 $mail->Subject = '这里是邮件标题' . time(); $mail->Body = '<h1>这里是邮件内容</h1>' . date('Y-m-d H:i:s'); $mail->AltBody = '如果邮件客户端不支持HTML则显示此内容'; $mail->send(); echo '邮件发送成功'; } catch (Exception $e) { echo '邮件发送失败: ', $mail->ErrorInfo; }发送完带附件的邮件界面如下:
