• ThinkPHP 使用第三方phpmailer库发送邮件


    安装phpmailer库

    由于phpmailer托管在composer上,所以可使用composer进行安装。进入thinkphp工程根目录下,输入如下命令。

    composer require phpmailer/phpmailer

    等待片刻后,自动默认安装在vendor目录下。如图。

    编写公共的发邮件方法(可选)

    在application目录下的common.php文件中编写发邮件方法。在公共common.php文件中编写方法有个好处就是,可以在整个thinkphp框架下直接调用该方法名。

    use PHPMailerPHPMailerPHPMailer;
    
    /**
     * 发送邮件
     * @param array $content
     * @return string
     */
    function sendEmail(array $content=[
           'Host'=>'',                 //服务器
           'Port'=>'',                 //端口
           'Username'=>'',             //邮箱的用户名
           'Password'=>'',             //密码  部分邮箱是授权码(例如163邮箱)
           'setFrom'=>[],              //发件人
           'addAddress'=>[],           //收件人
           'addReplyTo'=>[],           //回复的时候回复给哪个邮箱 建议和发件人一致
           'addCC'=>[],                //抄送
           'addBCC'=>[],               //密送
           'addAttachment'=>'',        //添加附件
           'Subject'=>'',              //邮件标题
           'Body'=>'',                 //邮件内容
           'AltBody'=>'',              //如果邮件客户端不支持HTML则显示此内容
       ])
    {
        $email = new PHPMailer(true);
        try {
            $email->isSMTP();               //使用SMTP协议
            $email->isHTML(true);           //是否以HTML文档格式发送
            $email->SMTPAuth = true;        //启用SMTP验证功能
            $email->SMTPSecure = "ssl";     //加密方式
            $email->CharSet ="UTF-8";       //设定邮件编码
            // $email->SMTPDebug = false;      //设置为 true 可以查看具体的发送日志
    
            //获取参数
            $email->Host = $content['Host'];
            $email->Port = $content['Port'];
            $email->Username = $content['Username'];
            $email->Password = $content['Password'];
            $email->setFrom($content['setFrom'][0],$content['setFrom'][1]);
            $email->addAddress($content['addAddress'][0],$content['addAddress'][1]);
            if(!empty($content['addReplyTo'])){ $email->addReplyTo($content['addReplyTo'][0],$content['addReplyTo'][1]); }
            if(!empty($content['addCC'])){ $email->addCC($content['addCC'][0],$content['addCC'][1]); }
            if(!empty($content['addBCC'])){ $email->addBCC($content['addBCC'][0],$content['addBCC'][1]); }
            if(!empty($content['addAttachment'])){ $email->addAttachment = $content['addAttachment']; }
            $email->Subject = $content['Subject'];
            $email->Body = $content['Body'];
            if(!empty($content['AltBody'])){ $email->AltBody = $content['AltBody']; }
            $res = $email->send();
            if ($res){
                return '1^邮件发送成功';
            }else{
                return '-1^邮件发送失败';
            }
    
        }catch (Exception $e){
            return '-1^邮件发送失败: '.$email->ErrorInfo;
        }
    
    }

    调用发邮件方法

    编写好发邮件的方法后进行发邮件测试,如在index.php文件中编写测试方法。

    /**
     * 测试方法
     */
    function test(){
        // include '../application/common.php';
        echo sendEmail([
            'Host'=>'smtp.exmail.qq.com',                 //服务器
            'Port'=>'465',                 //端口
            'Username'=>'w******g@med****.cn',             //邮箱的用户名
            'Password'=>'D******4',             //密码  部分邮箱是授权码(例如163邮箱)
            'setFrom'=>['w******g@med****.cn','**旺'],              //发件人
            'addAddress'=>['w******w@foxmail.com','w***w'],           //收件人
            'addReplyTo'=>['w******g@med****.cn','**旺'],           //回复的时候回复给哪个邮箱 建议和发件人一致
            'addCC'=>[],                //抄送
            'addBCC'=>[],               //密送
            'addAttachment'=>'',        //添加附件
            'Subject'=>'这里是邮件标题',              //邮件标题
            'Body'=>'<h1>这里是邮件内容</h1>',                 //邮件内容
            'AltBody'=>'如果邮件客户端不支持HTML则显示此内容',              //如果邮件客户端不支持HTML则显示此内容
        ]);
    }

    在浏览器中输入测试方法的地址。效果如图。

       至此。转载请注明出处,记得扫码打赏支持哦,谢谢!

  • 相关阅读:
    【原创】使用开源libimobiledevice盗取iphone信息
    【原创】Arduino制作Badusb实践
    【原创】Aduino小车玩法全记录
    【原创】Arduino入门基础知识总结
    【原创】Arduino、arm、树莓派与单片机
    【原创】PM3破解IC卡记录
    【转】反编译D-Link路由器固件程序并发现后门
    DDOS分布式拒绝服务
    XSS 初识
    针对企业级别渗透测试流程
  • 原文地址:https://www.cnblogs.com/wcwnina/p/14413548.html
Copyright © 2020-2023  润新知