ThinkPHP 3.2 整合PHPmailer 发送SMTP邮件

ThinkPHP 3.2 整合PHPmailer 发送SMTP邮件


网站使用TP3.2开发,需要使用SMTP邮件注册验证功能,网上研究很多内容,自己尝试并且整理如下

postbrid : There I am , in the world more exciting!

www.ptbird.cn


  1. 下载PHPmailer并copy到目录

  2. 进行config配置

  3. 函数sendmail实现主要功能

  4. 重要错误指出

一、下载PHPmailer并copy到网站目录中

1、OSC上的内容:http://www.oschina.net/p/phpmailer/

2、压缩包中很多东西是没有用的,作为不研究直接使用来说,只要保留以下文件即可

  • class.phpmailer.php
  • class.smtp.php
  • class.pop3.php

3、将文件夹phpmailer复制到TP的Library/Vendor文件夹下(PHPmailer属于第三方类库,并且命名规范不符合TP的要求,所以应当使用第三方类库Vendor方式打开)如下图:这里写图片描述

4、请注意文件夹名和文件名*

1) *Vendor引入的时候 Vendor(‘phpmailer.class#phpmailer’);

2) 为什么使用#呢? phpmailer代表文件夹 . 后面的代表文件名 class.phpmailer(请比对图片)

3) 将 . 换成 # 可以避免在解析的时候解析出错,因为从根本原理上讲 vendor 也是通过import实现的(具体可参照TP官方文档)

二、进行config配置

copy到网站目录后就能进行配置工作。

! 其中为了方便测试,直接在 TP/Conf/convention.php 中添加配置如下:

! 关于如何申请SMTP以及获取SMTP密码可以参照(http://jingyan.baidu.com/article/495ba841ecc72c38b30ede38.html

// 配置邮件发送服务器
    'MAIL_SMTP'                     =>TRUE,
    'MAIL_HOST'                     =>'smtp.163.com',//邮件发送SMTP服务器
    'MAIL_SMTPAUTH'                 =>TRUE,
    'MAIL_USERNAME'                 =>'hellomarker@163.com',//SMTP服务器登陆用户名
    'MAIL_PASSWORD'                 =>'x****************z',//SMTP服务器登陆密码
    'MAIL_SECURE'                   =>'tls',
    'MAIL_CHARSET'                  =>'utf-8',
    'MAIL_ISHTML'                   =>TRUE,

做好配置工作之后就能进行函数的编写,上述配置可以在APP的配置中添加,然后都是通过C()获取。

三、3.1 | 函数sendmail实现主要功能

为了方便在全局使用,所以将sendMail()定义成了全局数组,定义在 TP/Common/functions.php 中

之后在任何地方都可以无条件调用。

下述是基本完整的邮件配置信息,具体可参照网上关于PHPMAILER的介绍。

C中的参数都是通过2中配置得到的

*需要注意的问题是:

  • $mail = new \PHPMailer(); 在实例化PHPMailer的时候,应当使用 new \PHPMailer();

    • 不然会出现 可能会出现 Class phpmailer not found! 的错误
  • 引入的文件 Vendor(‘phpmailer.class#phpmailer’);详细见上文所述原因。
//邮件发送
function sendMail($to, $subject, $content) {
    Vendor('phpmailer.class#phpmailer');
    $mail = new \PHPMailer(); //实例化
    // 装配邮件服务器
    if (C('MAIL_SMTP')) {
        $mail->IsSMTP();  //启动SMTP
    }
    $mail->Host = C('MAIL_HOST'); //SMTP服务器地址
    $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用SMTP认证
    $mail->Username = C('MAIL_USERNAME');//邮箱名称
    $mail->Password = C('MAIL_PASSWORD');//邮箱密码
    $mail->SMTPSecure = C('MAIL_SECURE');//发件人地址
    $mail->CharSet = C('MAIL_CHARSET');//邮件头部信息
    $mail->From = C('MAIL_USERNAME');//发件人是谁
    $mail->AddAddress($to);
    $mail->FromName = 'Marker | pop';//设置每行字符长度
    $mail->IsHTML(C('MAIL_ISHTML'));//是否是HTML字样
    $mail->Subject = $subject;// 邮件标题信息
    $mail->Body = $content;//邮件内容
    // 发送邮件
    if (!$mail->Send()) {
        return FALSE;
    } else {
        return TRUE;
    }

下面在IndexController中调用sendMail函数进行测试!

三、3.2 | 函数sendmail() 功能测试

参照sendmail解释参数:

  • $to - > 对应下文的 ptbird@yeah.net 是目的邮箱
  • $subject -> 对应 ptbird 是发送者
  • $content -> 对应 test…… 是邮件内容

函数返回 boolean 类型

public function index(){
      if(SendMail('ptbird@yeah.net','ptbird','test email by postbird!')){
      $this->show('success');
      }
    }

邮件内容如下 这里写图片描述

四、错误提出

## 部分错误: ##

  • 类无法引入:

    • 文件夹的名称在Vendor是否正确

    • . # 是否出现问题(该问题一般在linux上出现)

    • 引入文件路径的大小写问题

  • 特例:
    • 出现 CLASS SMPT NOT FOUND 是 PHPmailer的文件错误,请下载正确文件
  • 其他错误:

    • 网上很多就不在这里一一赘述,关于报错的原因请参照PHPMAILER的错误信息判断。

    PHPmailerV5.1以及相关代码托管:http://git.oschina.net/postbird/ThinkPHP-and-PHPmail

欢迎前来指正!By postbird

学习参照http://my.oschina.net/BearCatYN/blog/299192

转载于:https://my.oschina.net/postbird/blog/669705

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值