PHPMailer下载和使用教程(非常详细)
PHPMailer 是一款专为 PHP 语言编写的电子邮件发送库,是 PHP 发邮件的终极外挂。原生 mail() 函数只能裸发文本,HTML、附件、SMTP 认证全靠自己拼接,PHPMailer 把这一套封装成几个方法,new 完对象直接 Send() 就能跑。
PHPMailer 的同领域对手主要有 3 个,分别是 SwiftMailer 和 Symfony Mailer:
- SwiftMailer 已停止维护;
- Symfony Mailer 要 PHP 7.2+ 且依赖一堆组件,老项目升不动;
- PEAR Mail 十年不更新,官网 SSL 证书都过期。
相比之下,PHPMailer 有明显的优势:
- 文档中文翻译齐全,CSDN 博客示例成吨,复制就能跑;
- 异常信息人话级别,直接把 SMTP 返回码翻译成“密码错”“邮箱满”;
- GitHub issue 当天回,升级节奏稳,兼容老项目。
一句话,PHP 实现发电子邮件,不想折腾就用 PHPMailer,十分钟从 0 到发第一封 HTML 邮件,剩下的时间摸鱼不香吗。
下载安装PHPMailer
下载 PHPMailer 的方式有以下两种:
1、直接从 GitHub 上下载,下载地址为:
网盘下载:PHPMailer安装包
网盘里提供了最新版的 PHPMailer。
2、使用 composer 下载 Composer,下载地址为:
网盘下载:Composer安装包
下载会获得一个名为 "Composer-Setup.exe" 的安装程序,双击它开始安装:
① 直接点击 Next:
② 点击 browse 打开 php 文件夹下的 php.exe,然后点击 Next:
③ 后续一直按 Next,直到出现下图的界面,表示安装完成:
④ 按组合键 win + R 输入 cmd 出现命令提示框,输入 composer 回车,看到下图的输出信息证明安装成功:
3) 利用 Composer 安装 PHPMailer,按组合键 win + R 输入 cmd 出现命令提示框,输入下面指令:
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 代码示例:
<?phpuse 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 exceptionstry {//服务器配置$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;
}
发送完带附件的邮件界面如下: