美文网首页
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