初次使用thinkphp框架,开发一个邮件发送功能,由于对框架不熟悉折腾了几个小时终于成功了,以下是代码记录。

背景

  • web
    开发过程中,经常会用到邮件的发送功能,比如接收消费账单的提醒、亚马逊图书推荐的推送,或者网站不正常操作报警的邮件提示等。

  • 下面是一个在ThinkPHP 3.2.3 框架下集成 PHPMailer
    使用的邮件发送功能实现过程,仅供参考,谢谢…

图片 1

此函数只能在ThinkPHP中使用且需要phpmailer扩展的支持;
phpmail的下载地址:

一、前期准备

图片 2STMP
简介 《百度百科》

  • 以 163.com
    邮箱为例,点击上方导航栏的“设置”,选择“POP3/SMTP/IMAP”进行下面的设置
  • 着重记下服务器地址(SMTP服务器:smtp.163.com)

图片 3

  • 然后点击“客户端授权密码”进行权限设置,一般会进行短信的验证,并记录下自己设定的授权登录密码,后面的代码中需要用到。

图片 4

将phpmailer解压后放置扩展放置到第三方类库扩展目录下: ThinkPHP/Extend/Vendor/文件夹下即可,并使用vendor方法来导入。更详细介绍参考:

二、代码实现

//邮件发送 配置 'EMAIL_CONFIG' => array( 'host' => 'smtp.163.com', 'post' => '25', 'username' => 'xxxxxxxxxx@163.com',//TODO 邮箱账号 'password' => 'xxxxxxx',//TODO 客户端授权密码 'sender' => '木头人',//TODO 发送人昵称 ),
  • 注意 phpmailer 代码包所放的位置,以便后面的 Email 类的实例化
  • 此处代码主要是调用配置文件数据,无需变动,需要深入学习的可以自行阅读.

图片 5

  • 路径:./Application/M/Vieww/Email/index.html
  • 核心 js 代码如下:

function send() { var toUrl = "{:U('Email/send')}"; var postData = $("#form-email").serialize(); $.ajax({ type: "POST", url: toUrl, data: postData, dataType: "json", success: function  { layer.msg(res.message); } }); }
  • 路径:‘.\Application\M\Controller\EmailController.class.php’
  • 调用邮件发送功能的核心代码为下图中红色框内三行。

图片 6

步骤1:创建think_send_mail方法

三、功能实现效果

  • 注意:邮箱输入错误或者内容填写太过随意,会造成发送失败,邮件可在发送者邮箱看到,提示“抱歉,您的邮件被退回来了…”。

图片 7邮件发送前端显示

  • 如果操作正常,上面输入的邮箱中会接收到对应的邮件,但是有的可能会在自己的“垃圾箱”中,注意查收.

图片 8成功进行邮件接收

 /**   * 系统邮件发送函数   * @param string $to    接收邮件者邮箱   * @param string $name  接收邮件者名称   * @param string $subject 邮件主题    * @param string $body    邮件内容   * @return boolean    */  function think_send_mail($to, $name, $subject = '', $body = ''){      vendor('PHPMailer.class#phpmailer'); //从PHPMailer目录导class.phpmailer.php类文件      $mail = new \PHPMailer;//此处必须加“\”号否则报错            // Inform class to use SMTP          $mail->IsSMTP();            // Enable this for Testing          $mail->SMTPDebug  = 2;            // Enable SMTP Authentication          $mail->SMTPAuth   = true;            // Host of the SMTP Server          $mail->Host = 'smtp.126.com';//SMTP服务器用户名            // Port of the SMTP Server          $mail->Port = 25;//SMTP服务器端口            // SMTP User Name          $mail->Username   = "my_email_test@126.com";//邮箱地址            // SMTP User Password          $mail->Password = "********";//邮箱密码            // Set From Email Address          $mail->SetFrom("my_email_test@126.com", $name);            // Add Subject          $mail->Subject= $subject;            // Add the body for mail          $mail->MsgHTML($body);            // Add To Address          $mail->AddAddress($to, $name);              // Finally Send the Mail          return $mail->Send() ? true : $mail->ErrorInfo;  }

三、附录

步骤2:在控制器调用即可

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图