PHPMailer 发送163网易企业邮箱和个人邮箱, 163邮箱可能无法发送gmail邮箱,可使用qq邮箱解决问题

第一步:注册邮箱,获取客户端授权码 (个人邮箱步骤类似)
企业邮箱设置:客户端设置->开启客户端授权密码->生成授权密码->保存授权密码
在这里插入图片描述
在这里插入图片描述
第二步: 上代码

composer require phpmailer/phpmailer  //拉下phpmailer

企业邮箱代码 (仔细看注释):主要是端口问题

/**
 * 发送邮件 2019年3月19日14:18:52 HH
 * @return [type] [description]
 */
function sendEmail($email,$title,$message)
{
    $mail = new PHPMailer\PHPMailer\PHPMailer();
    //debug 测试阶段打开 
    // $mail->SMTPDebug = 1;
    //使用smtp鉴权方式发送邮件
    $mail->isSMTP();
    //smtp需要鉴权 这个必须是true
    $mail->SMTPAuth=true;
    //链接163企业邮箱的服务器地址
    $mail->Host = 'smtphz.qiye.163.com';
    //企业邮箱使用587端口时 用ssl, 
    $mail->SMTPSecure = 'ssl';
    //企业邮箱服务器端口号   端口很重要,不同服务商不同端口,同一服务商端口也不一样,若实在不行,尝试服务商提供不同端口
    $mail->Port = 587;
    //设置发送的邮件的编码 
    $mail->CharSet = 'UTF-8';
    //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
    $mail->FromName = 'xxx';
    //企业邮箱账号
    $mail->Username = 'xxxxx@xxxxx.com';
    //企业邮箱授权码, 有人说用企业邮箱登录密码可以,但测试中都没发送成功
    $mail->Password = 'xxxxxxxxxxxx';/
    //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
    $mail->From = 'xxxxx@xxxx.com' ;
    //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
    $mail->isHTML(true);
    //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大
    $mail->addAddress($email);
    //添加多个收件人 则多次调用方法即可
    // $mail->addAddress('xxx@163.com','lsgo在线通知');
    //添加该邮件的主题
    $mail->Subject = $title;
    $mail->Body = $message; 
    $status = $mail->send();    //简单的判断与提示信息 
    //dump($mail->ErrorInfo);exit; //这个主要有个端口错误导致的超时报错,调试可以用   
    if($status){// 发送邮件  
        return true;
    }else{  
        return false;  
    }   
}

使用个人邮箱发送邮件

/**
 * 发送邮件 
 * @return [type] [description]
 */
function sendEmail($email,$title,$message)
{
    $mail = new \PHPMailer\PHPMailer\PHPMailer();
    $mail->IsSMTP(); // 使用SMTP方式发送
    $mail->SMTPSecure = 'ssl';//加密方式
    $mail->CharSet='UTF-8';//编码方式
    $mail->Host = 'smtp.163.com';//163服务器地址
    $mail->Port = '994'; // 设置端口
    $mail->SMTPAuth = true; // 启用SMTP验证功能
    $mail->Username = 'xxxx@163.com';//邮箱账户
    $mail->Password = 'xxxxxxxx'; //客户端授权码
    $mail->From = 'xxxxx@163.com';//邮箱账户
    $mail->FromName = $title; //邮箱标题
    $mail->AddAddress($email);
    $mail->IsHTML(true);
    $mail->Subject = $title;
    $mail->Body = $message; //邮件内容
    $res = $mail->send();
    if($res){// 发送邮件  
        return true;
    }else{  
        return false;  
    }    
}

今天客户有国外用户需要通过gmail邮箱注册,本来直接用163邮箱,结果搞了一上午,客户反应接收不到验证码,然后用自己的gmail邮箱测试了一下,代码返回 true,但gmail邮箱接收不了。 然后用登录163邮箱直接发送邮件,结果还是 接收不了,应该是163邮箱服务器不支持。 最后用qq邮箱发送到gmail邮箱,秒到!

贴一个qq邮箱的端口和qq服务器地址

	$mail = new \PHPMailer\PHPMailer\PHPMailer();
    $mail->IsSMTP(); // 使用SMTP方式发送
    $mail->SMTPSecure = 'ssl';
    $mail->CharSet='UTF-8';
    $mail->Host = 'smtp.qq.com';//qq邮箱地址
    $mail->Port = '465'; // 设置端口
    $mail->SMTPAuth = true; // 启用SMTP验证功能
    $mail->Username = 'xxxxxxxx@qq.com'; //qq邮箱地址
    $mail->Password = 'xxxxxxxx'; //授权码
    $mail->From = 'xxxx'; //qq邮箱地址
    $mail->FromName = $title;
    $mail->AddAddress($email);
    $mail->IsHTML(true);
    $mail->Subject = $title;
    $mail->Body = $message; //邮件内容
    $res = $mail->send();// 发送邮件  
    
    if($res){
        return true;
    }else{  
        return false;  
    }  

126网易邮箱端口记录

 public static $HOST = 'smtp.126.com'; // QQ 邮箱的服务器地址
 public static $PORT = 465; // smtp 服务器的远程服务器端口号
 public static $SMTP = 'ssl'; // 使用 ssl 加密方式登录

谷歌邮箱端口记录

 public static $HOST = 'smtp.gmail.com'; // QQ 邮箱的服务器地址
 public static $PORT = 587; // smtp 服务器的远程服务器端口号
 public static $SMTP = 'tls'; // 使用 tls 加密方式登录, **这里不可以大写**

若有错误,欢迎指正

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值