- 先下载tp5发邮件扩展
使用composer安装phpmailer
composer require phpmailer/phpmailer
https://github.com/PHPMailer/PHPMailer 直接下载下来之后,在TP5框架的extend文件夹里面建一个PHPMailer文件夹
把下载下来的文件夹里边的src里边的 PHPMailer.php 和 SMTP.php 放在 刚刚创建的 TP5/extend/PHPMailer这个文件夹里
- 然后在自己的方法里发送邮件就行了
然后把 PHPMailer.php 和 SMTP.php 的命名空间改成 PHPMailer
use PHPMailer\PHPMailer\PHPMailer;/*** 设置邮箱验证功能** @param string $toEmailUrl* @param string $url* @return bool* @throws \PHPMailer\PHPMailer\Exception*/public function setEmail($toEmailUrl='',$url=''){$mail = new PHPMailer();//——————————————————————————————————————————————————————————————————————$toemail = $toEmailUrl;//收件人//$toemail = '121283134@qq.com';//收件人//——————————————————————————————————————————————————————————————————————$mail->isSMTP();// 使用SMTP服务$mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码$mail->Host = "smtp.163.com";// 发送方的SMTP服务器地址$mail->SMTPAuth = true;// 是否使用身份验证$mail->Username = "13009994391@163.com";/// 发送方的163邮箱用户名,就是你申请163的SMTP服务使用的163邮箱$mail->Password = "OHJTNXWXGTLZWGBG";// 发送方的邮箱密码,注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码!$mail->SMTPSecure = "ssl";// 使用ssl协议方式$mail->Port = 465;// 163邮箱的ssl协议方式端口号是465/994$mail->setFrom("13009994391@163.com","SUN.WEI.ZHAO");// 设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@163.com),Mailer是当做名字显示$mail->addAddress($toemail,'SUN');// 设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@163.com)$mail->addReplyTo("13009994391@163.com","Reply");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址//$mail->addCC("xxx@163.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)//$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)//$mail->addAttachment("bug0.jpg");// 添加附件$mail->Subject = "修改密码验证";// 邮件标题//$num = rand(100000,999999);//$num = $this->randomVerification();//________________________________________________________________________________________________________//$mail->Body = "邮件内容是 :您的验证码是:".$num;// 邮件正文$mail->Body = "请点击当前链接进行密码修改:http://tp2021.cc".$url;// 邮件正文//________________________________________________________________________________________________________//$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用if(!$mail->send()){// 发送邮件// echo "Message could not be sent.";//echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息//echo 2;return false;}else{return true;//echo '发送成功'; //成功//echo '<br>';}}
- 以163邮箱为例
163邮箱客户端授权密码获取方法**:
- 登录163邮箱后,点击上方导航栏的【设置】-【邮箱设置】。

- 因为我们要先查看POP3/SMTP/IMTP服务是否已开启了,确认没有开启再点击【必须先开能客户端授权密码】;客户端授权密码是不会自动开启的,需要主动点击设置为开启。

- 客户端授权密码需要绑定手机才能够进行设置,输入已绑定邮箱的手机号码点击获取验证码,一个号码一天只能发送三次验证码。当提示已获得客户端授权密码的时候,同时也会开通POP3/SMTP/IMTP邮件收发服务。值得注意的是,此客户端授权密码的提示只会出现一次最好截图记录。
- 方法调用
//发送邮件验证$sendResult = $this->setEmail('99420456@qq.com',url('Login/changePwd',[$userCacheId=>$signature]));
