zoukankan      html  css  js  c++  java
  • Thinkphp5的使用phpmailer实现发邮件功能(163邮箱)

    Thinkphp5本身并没有实现发邮件的功能,至少据我所知。

    本文利用网易邮箱作为发邮件的邮箱。作为发送邮件的前提是需要开启SMTP服务,打开网易邮件,点击设置按钮,如下图所示

    勾选smtp服务

    保存之后点击->客户端授权密码,我的已经开通

    没有开通的按照步骤操作即可,然后下面是下载phpMailer,https://github.com/PHPMailer/PHPMailer/,这个地址;下载之后将其中的两个文件

    拿出来,放到Thinkphp5的扩展目录下,扩展目录先创建一个叫mailer的文件,就放在这个下面,然后打开两个文件,给一个命名空间名字,我的是namespace mailer;

    然后我再项目的common.php下,写了如下代码

     1 <?php
     2 // +----------------------------------------------------------------------
     3 // | ThinkPHP [ WE CAN DO IT JUST THINK ]
     4 // +----------------------------------------------------------------------
     5 // | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
     6 // +----------------------------------------------------------------------
     7 // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
     8 // +----------------------------------------------------------------------
     9 // | Author: 流年 <liu21st@gmail.com>
    10 // +----------------------------------------------------------------------
    11 
    12 // 应用公共文件
    13 
    14 use mailerPHPMailer;
    15 use mailerSMTP;
    16 /*
    17  * 应用公共函数文件,函数不能定义为public类型,
    18  * 如果我们要使用我们定义的公共函数,直接在我们想用的地方直接调用函数即可。
    19  * */
    20 // 公共发送邮件函数
    21 function sendEmail($desc_content, $toemail,  $desc_url){
    22     echo $desc_content;
    23     echo $toemail;
    24         $mail = new PHPMailer();
    25         $mail->isSMTP();// 使用SMTP服务
    26         $mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
    27         $mail->Host = "smtp.163.com";// 发送方的SMTP服务器地址
    28         $mail->SMTPAuth = true;// 是否使用身份验证
    29         $mail->Username = "xxx@163.com";// 发送方的163邮箱用户名,就是你申请163的SMTP服务使用的163邮箱</span><span style="color:#333333;">
    30         $mail->Password = "xxxx";// 发送方的邮箱密码,注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码!</span><span style="color:#333333;">
    31         $mail->SMTPSecure = "ssl";// 使用ssl协议方式</span><span style="color:#333333;">
    32         $mail->Port = 465;// 163邮箱的ssl协议方式端口号是465/994
    33         $mail->setFrom("xxx@163.com","Mailer");// 设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@163.com),Mailer是当做名字显示
    34         $mail->addAddress($toemail,'博客回复消息');// 设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@163.com)
    35         $mail->addReplyTo("xxx@163.com","Reply");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
    36         //$mail->addCC("xxx@163.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
    37         //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
    38         //$mail->addAttachment("bug0.jpg");// 添加附件
    39         $mail->Subject = "邮件回复!";// 邮件标题
    40         $mail->Body = "以下是博客博主回复你的内容:".$desc_content."点击可以查看文章地址:".$desc_url;// 邮件正文
    41         //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
    42       
    43         if(!$mail->send()){// 发送邮件
    44             echo 22;
    45             return $mail->ErrorInfo;
    46         // echo "Message could not be sent.";
    47         // echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
    48         }else{
    49             return 1;
    50         }
    51 }

    然后在控制器的方法下使用就可以了,因为在common.php下所以不需要引入模块,使用代码

     1   /**
     2      * 邮件发送
     3      */
     4     public function sendEmail()
     5     {
     6         // 根据你的内用传入得到相关的参数,在调用我们方才的函数时,传递过去即可。
     7         $res = sendEmail("222", "xxx@163.com", "url");
     8        // $res就是sendEmail()返回的值。我们根据返回的相应参数进行处理即可。
     9        dump($res);
    10         if ($res) {
    11           echo 1;
    12         }else{
    13           echo 0;
    14         }
    15     }

    然后直接在浏览器走一下控制器下路由就可以啦啦啦,查看发送的邮件,发送成功。

  • 相关阅读:
    bzoj 2483: Pku2279 Mr. Young's Picture Permutations -- 钩子公式
    bzoj 3940: [Usaco2015 Feb]Censoring -- AC自动机
    bzoj 1059: [ZJOI2007]矩阵游戏 -- 二分图匹配
    bzoj 1911: [Apio2010]特别行动队 -- 斜率优化
    bzoj 1433: [ZJOI2009]假期的宿舍 -- 最大流
    bzoj 3944: Sum -- 杜教筛
    bzoj 3872: [Poi2014]Ant colony -- 树形dp+二分
    bzoj 1115: [POI2009]石子游戏Kam -- 博弈论
    (三)shiro的认证
    (二)spring初次遇见shiro
  • 原文地址:https://www.cnblogs.com/zhensg123/p/8954175.html
Copyright © 2011-2022 走看看