• 先下载tp5发邮件扩展

    使用composer安装phpmailer

    1. composer require phpmailer/phpmailer

    https://github.com/PHPMailer/PHPMailer 直接下载下来之后,在TP5框架的extend文件夹里面建一个PHPMailer文件夹

    把下载下来的文件夹里边的src里边的 PHPMailer.php 和 SMTP.php 放在 刚刚创建的 TP5/extend/PHPMailer这个文件夹里
    20190126114620337.png

    • 然后在自己的方法里发送邮件就行了

    然后把 PHPMailer.php 和 SMTP.php 的命名空间改成 PHPMailer

    1. use PHPMailer\PHPMailer\PHPMailer;
    2. /**
    3. * 设置邮箱验证功能
    4. *
    5. * @param string $toEmailUrl
    6. * @param string $url
    7. * @return bool
    8. * @throws \PHPMailer\PHPMailer\Exception
    9. */
    10. public function setEmail($toEmailUrl='',$url='')
    11. {
    12. $mail = new PHPMailer();
    13. //——————————————————————————————————————————————————————————————————————
    14. $toemail = $toEmailUrl;//收件人
    15. //$toemail = '121283134@qq.com';//收件人
    16. //——————————————————————————————————————————————————————————————————————
    17. $mail->isSMTP();// 使用SMTP服务
    18. $mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
    19. $mail->Host = "smtp.163.com";// 发送方的SMTP服务器地址
    20. $mail->SMTPAuth = true;// 是否使用身份验证
    21. $mail->Username = "13009994391@163.com";/// 发送方的163邮箱用户名,就是你申请163的SMTP服务使用的163邮箱
    22. $mail->Password = "OHJTNXWXGTLZWGBG";// 发送方的邮箱密码,注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码!
    23. $mail->SMTPSecure = "ssl";// 使用ssl协议方式
    24. $mail->Port = 465;// 163邮箱的ssl协议方式端口号是465/994
    25. $mail->setFrom("13009994391@163.com","SUN.WEI.ZHAO");// 设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@163.com),Mailer是当做名字显示
    26. $mail->addAddress($toemail,'SUN');// 设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@163.com)
    27. $mail->addReplyTo("13009994391@163.com","Reply");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
    28. //$mail->addCC("xxx@163.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
    29. //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
    30. //$mail->addAttachment("bug0.jpg");// 添加附件
    31. $mail->Subject = "修改密码验证";// 邮件标题
    32. //$num = rand(100000,999999);
    33. //$num = $this->randomVerification();
    34. //________________________________________________________________________________________________________
    35. //$mail->Body = "邮件内容是 :您的验证码是:".$num;// 邮件正文
    36. $mail->Body = "请点击当前链接进行密码修改:http://tp2021.cc".$url;// 邮件正文
    37. //________________________________________________________________________________________________________
    38. //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
    39. if(!$mail->send()){// 发送邮件
    40. // echo "Message could not be sent.";
    41. //echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
    42. //echo 2;
    43. return false;
    44. }else{
    45. return true;
    46. //echo '发送成功'; //成功
    47. //echo '<br>';
    48. }
    49. }
    • 以163邮箱为例


    163邮箱客户端授权密码获取方法**:

    1. 登录163邮箱后,点击上方导航栏的【设置】-【邮箱设置】。

    image.png

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

    image.png

    1. 客户端授权密码需要绑定手机才能够进行设置,输入已绑定邮箱的手机号码点击获取验证码,一个号码一天只能发送三次验证码。当提示已获得客户端授权密码的时候,同时也会开通POP3/SMTP/IMTP邮件收发服务。值得注意的是,此客户端授权密码的提示只会出现一次最好截图记录。


    • 方法调用
      1. //发送邮件验证
      2. $sendResult = $this->setEmail('99420456@qq.com',url('Login/changePwd',[$userCacheId=>$signature]));