一、开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以QQ邮箱的SMTP服务为例)
1.登录qq邮箱,在首页上找到“设置”。
2.选择开启的服务,一般都全选,POP3/SMTP/IMAP,开启SMTP服务就得先开通客户授权码。
3.点击开通客户授权码,选择开启
4.需要手机验证码,需要绑定手机号。
5.SMTP服务需要输入客户端授权密码,这个密码就是是你在第三方客户端上的邮箱登录密码(在后面使用phpmailer发送邮件时会用到),如果在第三方客户端上输入之前的邮箱登录密码就会出错。
6.设置完客户端授权密码后就成功开通了SMTP服务
二、首先下载phpmailer压缩包
在tp6的项目中的extend目录下新建一个phpmailer文件夹
composer require phpmailer/phpmailer
然后把phpmailer.php 和smtp.php文件复制到目录下(只有这两个文件有用) 修改命名空间
添加phpmailer中添加 use think\Exception
此外要确保安装了 openssl扩展
三、发送邮件函数
/**
* [向邮箱发送验证码]
* @param [String] $email [目标emial]
* @param [Number] $code [验证码]
* @return [json] [执行结果]
*/
public function sendCodeToEmail($email, $code)
{
$toemail = $email;
$mail = new PHPMailer();
$mail->isSMTP(); //使用smtp鉴权方式发送邮件
$mail->CharSet = 'utf8'; //设置编码
$mail->Host = 'smtp.qq.com'; //qq邮箱smtp邮箱
$mail->SMTPAuth = true; //是否需要认证身份
$mail->Username = "123456789@qq.com"; //发送方邮箱
$mail->Password = "**********"; //发送方smtp密码
$mail->SMTPSecure = 'ssl'; //使用的协议
$mail->Port = 465; //qq邮箱接收的端口号
$mail->setFrom('123456789@qq.com', '验证码发送'); //定义邮件及标题(不同邮件标题显示不一致)
$mail->addAddress($toemail, '您好!'); //要发送的地址和设置地址的昵称
$mail->addReplyTo('123456789@qq.com', 'Replay'); //回复地址
$mail->Subject = "您有新的验证码!"; //添加该邮件的主题
$mail->Body = "您的验证码是" . $code . ",验证码的有效期为600秒,本邮件请勿回复!"; //该邮件内容
//如果发送失败
if (!$mail->send()) {
$this->return_msg(400, $mail->ErrorInfo);
} else {
$this->return_msg(200, '验证码发送成功,请注意查收!');
}
}