ThinkPHP中使用PHPMailer发送邮件

1、设置我们的邮箱客户端授权码

2、下载第三方类库 PHPMailer

Github下载地址:
    https://github.com/PHPMailer/PHPMailer
ThinkPHP中使用Composer安装命令:
    composer require phpmailer/phpmailer
    安装在 vendor/phpmailer/ 目录下

3、创建代码片段并配置相关的参数

1、找到我们项目公共配置文件的common.php文件,创建一个公用的函数。代码如下:
/**
 * 邮件发送
 * * * * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * * * * *
 * * 开始的时候,记得引用类                    *
 * * use PHPMailer\PHPMailer\PHPMailer;    *
 * * 应用公共函数文件,函数不能定义为public类型  *
 * * * * * * * * * * * * * * * * * * * * * *
 * * * * * * * * * * * * * * * * * * * * * *
 */

function sendEmail( $desc_content, $toemail,  $desc_url)
{
    // 实力化类
    $mail = new PHPMailer();
    // 使用SMTP服务
    $mail->isSMTP();
    // 编码格式为utf8,不设置编码的话,中文会出现乱码
    $mail->CharSet = "utf8";
    // 发送方的SMTP服务器地址
    $mail->Host = "smtp.163.com";
    // 是否使用身份验证
    $mail->SMTPAuth = true;
    // 发送方的163邮箱用户名,就是你申请163的SMTP服务使用的163邮箱
    $mail->Username = "********@163.com";
    // 发送方的邮箱密码,注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码
    $mail->Password = "******";
    // 使用ssl协议方式
    $mail->SMTPSecure = "ssl";
    // 163邮箱的ssl协议方式端口号是465/994
    $mail->Port = 994;
    // 设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@163.com),Mailer是当做名字显示
    $mail->setFrom("*******@163.com", "Mailer");
    // 设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@163.com)
    $mail->addAddress($toemail, '');
    // 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
    $mail->addReplyTo("itlaowen@163.com", "Reply");
    // 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
    //$mail->addCC("xxx@163.com");
    // 设置秘密抄送人(这个人也能收到邮件)
    //$mail->addBCC("xxx@163.com");
    // 添加附件
    //$mail->addAttachment("bug0.jpg");
    // 邮件标题
    $mail->Subject = "邮件标题!";
    // 邮件正文
    $mail->Body = "测试内容:" . $desc_content . "点击可以查看文章地址:" . $desc_url;
    // 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
    //$mail->AltBody = "This is the plain text纯文本";
    if (!$mail->send()) { // 发送邮件
        return $mail->ErrorInfo;
        // echo "Message could not be sent.";
        // echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
    } else {
        return 1;
    }
}
2、创建好后,我们便可以直接调用该函数。
public function send()
{
    echo sendEmail( '测试', '111111@163.com', 'http://www.baidu.com' );
}
posted on 2019-11-15 14:30  啥也不会的程序猿  阅读(543)  评论(2编辑  收藏  举报