安装

在vendor\topthink下执行composer命令,默认安装最新发送电子邮件的插件包:

composer require phpmailer/phpmailer

安装图例:

        wps2.jpeg


使用

引入方式:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

使用方法:

$mail = new PHPMailer(true);// Passing `true` enables exceptions
try {
    //服务器配置
    $mail->CharSet = "UTF-8";//设定邮件编码
    $mail->SMTPDebug = 0;// 调试模式输出
    $mail->isSMTP();// 使用SMTP
    $mail->Host = 'smtp.qq.com';// SMTP服务器
    $mail->SMTPAuth = true;// 允许 SMTP 认证
    $mail->Username = '*******@qq.com';// SMTP 用户名  即邮箱的用户名
    $mail->Password = '**********';// SMTP 密码  部分邮箱是授权码(例如163邮箱)
    $mail->SMTPSecure = 'ssl';// 允许 TLS 或者ssl协议
    $mail->Port = 465;// 服务器端口 25 或者465 具体要看邮箱服务器支持
    $mail->setFrom('******@qq.com', 'shx');//发件人
    $mail->addAddress($email, '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 = '我是邮件标题';
    $mail->Body = '我是邮件内容';
    $mail->AltBody = '如果邮件客户端不支持HTML则显示此内容';

    $mail->send();
    return '邮件发送成功';
} catch (Exception $e) {
    return '邮件发送失败: ' . $mail->ErrorInfo;
}


申请方式

本人用的是QQ邮箱的相关配置,所以这里申请方式就以QQ邮箱为例。

  1. 登入QQ邮箱。

  2. 进入设置,点击账户,向下翻,开启POP3/SMTP服务。



  3. 记录一下授权码,就是代码中的SMTP密码,无法复看,一旦忘记就只能重新申请!

    在这里插入图片描述

常见错误

  1. SMTP Error: Could not authenticate.错误怎么解决?

    网上大多数说的解决方案是:替换某个函数或者开启php.ini的某些功能。我个人曾多次出现此情况,前面的两个修改方案从未成功解决过错误,也可能我的问题和他们的报错原因不一样。本人多次入坑,强烈建议直接重新申请一次授权码就可以了,简单快捷!

    这个错误我发现只要我配置好以后隔段时间如果不去使用它,可能就会产生这个错误,我的代码和配置从没动过,但是隔一段时间仍旧失效,所以我怀疑QQ邮箱这边可能有一定验证机制,长时间不使用就会出现类似于注销的情况。