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