最近在使用thinkphp5做登录注册时需要使用邮箱接受验证码,使用的phpmailer发送邮件,在操作过程中出现了引用失败的问题,在此记录一下相关操作。
1、首先到github上下载phpmailer 文件包,网址:https://github.com/PHPMailer/PHPMailer ;本地是windows系统所以下载的是zip压缩文件;同时使用的邮箱帐号登录下,开启下SMTP服务;
2、解压文件:然后把文件夹重命名,复制存放到项目thinkPHP目录 extend文件夹内:
3、在所使用的控制器内编写代码,引入该文件,注意路径不要写错,因为phpmailer 没有使用Composer安装,使用的引入的方式,按照操作文档引入下文件。
namespace app\api\controller;
use think\Validate;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
require __DIR__.'/../../../extend/PHPMailer/PHPMailer/src/PHPMailer.php';
require __DIR__.'/../../../extend/PHPMailer/PHPMailer/src/SMTP.php';
public function send_code_to_email($email,$code){
// echo "send_code_to_email";
$toemail = $email;
$mail=new PHPMailer(true);
$mail->isSMTP();
$mail->CharSet='utf8';
$mail->Host='smtp.126.com';
$mail->SMTPAuth=true;
$mail->Username = 'XXX@126.com';//发送邮箱账号
$mail->Password='密码';
$mail->SMTPSecure='ssl';
$mail->Port=994;
$mail->setFrom('XXX@126.com','test');
$mail->addAddress($toemail,'test1');
$mail->addReplyTo('XXX@126.com','reply');
$mail->Subject ="new code";
$mail->Body="这是测试邮件,验证码:".$code."有效时间30分钟";
if(!$mail->send()){
$this->return_msg(400,$mail->ErrorInfo);
}else{
$this->return_msg(200,'code 已经发送');
}
}