做邮箱验证遇到了很多坑,各种百度各种试,最后终于弄好了,记录一下,下次使用直接拿过来就好了
使用框架是thinkPHP5.0 PHP版本为7
1、先从git下载PHPMailer,解压文件,然后再application里面的extend中,建一个文件夹PHPMailer,把下载好的文件复制到PHPMailer中(Exception.php、PHPMailer.php、SMTP.php就这三个)
然后给这三个文件(Exception.php、PHPMailer.php、SMTP.php)加上命名空间 注:三个都加,命名空间一样
2、在邮箱中设置授权码
设置完邮箱之后,直接上手代码(拷贝到你的方法中就可以了):下面提到的授权码就是上面图片上的客户端授权码
public function mail(){
$code = rand('100000','999999'); //六位随机数
$toemail= '*******@qq.com'; //收件人的邮箱
$to_name = '你是猪'; //设置收件人信息,如邮件格式说明中的收件人
$title = '这是一份测试邮件!';
$content = "哇哈哈哈哈哈哈,鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~鹅~笑出鹅叫,您的验证码为:【{$code}】";
$sendmail = '*********@163.com'; //发件人邮箱
$sendmailpswd = "*****"; //客户端授权密码,而不是邮箱的登录密码,就是手机发送短信之后弹出来的一长串的密码
$send_name = '本大爷'; // 设置发件人信息,如邮件格式说明中的发件人,
$mail = new PHPMailer\PHPMailer(); //实例化mail类
$mail->isSMTP(); // 使用SMTP服务
$mail->CharSet = "utf8"; // 编码格式为utf8,不设置编码的话,中文会出现乱码
$mail->Host = "SMTP.163.com"; // 发送方的SMTP服务器地址
$mail->SMTPAuth = true; // 是否使用身份验证
$mail->Username = $sendmail; // 发件人地址
$mail->Password = $sendmailpswd; //客户端授权密码,而不是邮箱的登录密码!
$mail->SMTPSecure = "ssl"; // 使用ssl协议方式
$mail->Port = 465; //sina端口110或25) //qq 465 587
$mail->setFrom($sendmail, $send_name); // 设置发件人信息,如邮件格式说明中的发件人,
$mail->addAddress($toemail, $to_name); // 设置收件人信息,如邮件格式说明中的收件人,
$mail->addReplyTo($sendmail, $send_name);// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
$mail->Subject = $title; // 邮件标题
//$code=$code;
session("code",$code);
$mail->Body = $content; // 邮件正文
//$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
if(!$mail->send()){
return json(["code"=>400,"result"=>$mail->ErrorInfo,"data"=>'']);//返回数据格式自己定义的一个函数
}else{
return json(["code"=>200,"result"=>"发送成功","data"=>'']);
}
}
最后
调试就完了,哈哈哈哈