美文网首页
php 使用PHPMailer发送邮件 2023-02-24

php 使用PHPMailer发送邮件 2023-02-24

作者: 阿然学编程 | 来源:发表于2023-02-23 23:26 被阅读0次
    • composer 安装PHPMailer
    composer require phpmailer/phpmailer
    
    • 封装QQ邮箱发送
    /**
     * 邮件发送
     * @param $userName     发送者邮箱
     * @param $pwd          发送者授权码
     * @param $sendAddress  收件人邮箱  说明:多人收件需使用数组[]
     * @param string $subject 邮件标题
     * @param string $body 邮件内容
     * @param string $attachment 邮件附件  说明:多个附件需使用数组[]
     * @return bool|string  返回bool或者异常字符串
     * @throws \PHPMailer\PHPMailer\Exception
     */
    function send_mail($userName, $pwd, $sendAddress, $subject = '', $body = '', $attachment = '')
    {
        $mail = new \PHPMailer\PHPMailer\PHPMailer();   //实例化PHPMailer对象
        $mail->CharSet = 'UTF-8';           //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
        $mail->isSMTP();                    // 设定使用SMTP服务
        $mail->SMTPDebug = 0;               // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
        $mail->SMTPAuth = true;             // 启用 SMTP 验证功能
        $mail->SMTPSecure = 'ssl';          // 使用安全协议
        $mail->Host = "smtp.qq.com";        // 企业邮局域名
        $mail->Port = 465;                  //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
    
        $mail->Username = $userName;        //邮件发送人的用户名(请填写完整的email地址)
        $mail->Password = $pwd;             //邮件发送人的 密码 (授权码)
    
        $mail->setFrom($userName, $userName);
        $replyEmail = '';                   //留空则为发件人EMAIL
        $replyName = '';                    //回复名称(留空则为发件人名称)
        $mail->addReplyTo($replyEmail, $replyName);  //回复的地址
        $mail->Subject = $subject;   //邮件标题
        $mail->msgHTML($body);       //邮件内容
    
        if (is_array($sendAddress)) {//收件人
    
            foreach ($sendAddress as $k => $v) {
                if (is_int($k)) {
                    $mail->addAddress($v);      //收件人地址,("收件人email")
                } else {
                    $mail->addAddress($v, $k);  //收件人地址,("收件人email","收件人姓名")
                }
            }
    
        } else {
    
            $mail->addAddress($sendAddress);      //收件人地址,("收件人email")
    
        }
    
        //$mail->addCC('cc@example.com');      // 抄送
        // $mail->addBCC('bcc@example.com');    //密送
    
        if (!empty($attachment)) {
    
            if (is_array($attachment)) {
    
                foreach ($attachment as $k => $v) {
                    if (is_int($k)) {
                        $mail->addAttachment($v);   //添加附件
                    } else {
                        $mail->addAttachment($v, $k);   //添加附件
                    }
                }
    
            } else {
    
                $mail->addAttachment($attachment);   //添加附件
            }
        }
    
        return $mail->send() ? true : $mail->ErrorInfo;
    }
    
    • 调用
        public function index()
        {
            $username = '97*****8@qq.com';//发件人邮箱
            $pwd = 'mdvozcjc*********';//发件人邮箱第三方授权码
            $sendAddress = ['142**********@qq.com', '47********5@qq.com'];//收件人邮箱,多人收件格式必须是数组形式
            $subject = '这是标题';
            $body = '这是邮件正文内容';
            $attachment = ['../data.csv'];//发送附件,多附件发送格式必须是数组形式
            $send = send_mail($username, $pwd, $sendAddress, $subject, $body, $attachment);
            if ($send === true) {
                return '发送成功';
            }
            return '发送失败';
        }
    

    相关文章

      网友评论

          本文标题:php 使用PHPMailer发送邮件 2023-02-24

          本文链接:https://www.haomeiwen.com/subject/isitldtx.html