使用PHPMailer发送邮件问题排查

2019-04-08 10:06:00 5694

程序配置检查是否有误

/**

 * @param string $user_mail 接收邮件者邮箱

 * @param string $subject 邮件主题

 * @param string $content 邮件内容

 * @return bool|string

 */

function send_mail($user_mail, $subject, $content){

    $mail = new PHPMailer\PHPMailer\PHPMailer(); //实例化

    $mail->IsSMTP(); // 启用SMTP

    $mail->Host = "smtp.163.com"; //SMTP smtp.qq.com QQ邮箱

    $mail->Port = 25;  //邮件发送端口

    $mail->SMTPAuth   = true;  //启用SMTP认证

    $mail->CharSet  = "UTF-8"; //字符集

    $mail->Encoding = "base64"; //编码方式

    $mail->Username = "koba007@163.com";  //你的邮箱

    $mail->Password = "*****";  //你的密码

    $mail->Subject = $subject; //邮件标题

    $mail->From = "koba007@163.com";  //发件人地址(也就是你的邮箱)

    $mail->FromName = 'koba';  //发件人姓名

    $address = "$user_mail";//收件人email

    $mail->AddAddress("$address");//添加收件人地址,昵称

    $mail->IsHTML(true); //支持html格式内容

    $mail->emailtype = "HTML"; //信件类型,文本:text;网页:HTML

    $mail->Body = $content;//邮件内容

    if(!$mail->Send()) {

        return $mail->ErrorInfo;

    } else {

        return true; //发送成功

    }

}



php配置

这里php必须开启 openssl 以及 allow_url_fopen。


allow_url_fopen = On

extension=php_openssl.dll

.dll是window的设置,Linux服务器需要安装 openssl 扩展。


Linux服务器上发送邮件失效

如果Linux服务器上发送邮件失效,或者返回空白,这里需要修改


$mail->Port = 465;

修改为:


$mail->SMTPSecure = 'ssl';

$mail->Port = 465;


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: