第一步:注册邮箱,获取客户端授权码 (个人邮箱步骤类似)
企业邮箱设置:客户端设置->开启客户端授权密码->生成授权密码->保存授权密码
第二步: 上代码
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 加密方式登录, **这里不可以大写**
若有错误,欢迎指正