ThinkPHP中使用PHPMailer发送邮件
发布时间:2024-03-07

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

    2、下载第三方类库 PHPMailer


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


    3、创建代码片段并配置相关的参数
        1、找到我们项目公共配置文件的common.php文件,创建一个公用的函数。代码如下:

        

    /**
     * 邮件发送
     * * * * * * * * * * * * * * * * * * * * * *
     * * * * * * * * * * * * * * * * * * * * * *
     * * 开始的时候,记得引用类                    *
     * * use PHPMailerPHPMailerPHPMailer;    *
     * * 应用公共函数文件,函数不能定义为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' );
    }