PHP 使用 PHPMailer 发送邮件

时间:2022-09-24 20:10:09
//发送邮件
    public function sendMail($to,$subject='',$body=''){
        include('class.phpmailer.php');
        include('class.smtp.php');
        include('config.db.php');
        $mail = new PHPMailer();
        $mail->CharSet = "utf-8";//设置邮件编码
        $mail->IsSMTP();//设定使用SMTP服务
        $mail->SMTPDebug = 1;//启用SMTP调试功能
        $mail->SMTPAuth = true;
        $mail->SMTPSecure = "ssl";
        $mail->Host = $mailconfig['Host']; //SMTP服务器
        $mail->Port = $mailconfig['Port'];//SMTP服务器端口号
        $mail->Username = $mailconfig['Username']; //SMTP服务器用户名
        $mail->Password = $mailconfig['Password']; //SMTP服务器密码
        $mail->Subject = $subject;
        $mail->SetFrom($mailconfig['Frommail'], $mailconfig['Fromname']);
        $mail->AltBody = "";
        $mail->MsgHTML($body);
        $address = $to;
        $mail->AddAddress($address,'');
        if(!$mail->send()){
            echo 'Mailer Error: '.$mail->ErrorInfo;
        }else{
            echo "Message sent!恭喜,邮件发送成功";
        }
    }

可能出现的问题:

1、如果邮件内容出现中文,一定要设置charset。PHP版本高的设置GBK可能会报错:
  Warning: html_entity_decode(): charset `GBK' not supported , 可以设置成utf-8
2、报错:01 mail from address must be same as authorization user 原因是因为Username的邮件地址和SetFrom的邮件地址不一样,设置成一样的就可以了。
3、smtp.qq.com 的端口号。一般是465或587
4、SMTP -> ERROR: Failed to connect to server: php_network_getaddresses: getaddrinfo failed 解决这个错误的方法,是你的邮箱要开启相关的配置,Password这一项写获得的邮箱验证码。

基本上就可以完美发送邮件了。。