ThinkPHP 3.2 整合PHPmailer 发送SMTP邮件
2015-12-26 00:21
796 查看
ThinkPHP 3.2 整合PHPmailer 发送SMTP邮件
网站使用TP3.2开发,需要使用SMTP邮件注册验证功能,网上研究很多内容,自己尝试并且整理如下postbrid : There I am , in the world more exciting!
www.ptbird.cn
下载PHPmailer并copy到目录
进行config配置
函数sendmail实现主要功能
重要错误指出
一、下载PHPma
4000
iler并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
相关文章推荐
- 垃圾邮件过滤器 python简单实现
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- Powershell 查找用户的主SMTP地址
- C#实现按数据库邮件列表发送邮件的方法
- C#使用自带的email组件发送邮件的方法
- C#.NET采用HTML模板发送电子邮件完整实例
- phpmailer 中文使用说明(简易版)
- ThinkPHP关联模型操作实例分析
- thinkphp3.0 模板中函数的使用
- 使用WordPress发送电子邮件的相关PHP函数用法解析
- ThinkPHP采用<volist>实现三级循环代码实例
- Thinkphp模板标签if和eq的区别和比较实例分析
- 合并ThinkPHP配置文件以消除代码冗余的实现方法
- ThinkPHP中自定义目录结构的设置方法
- ThinkPHP控制器详解
- php简单实现发送带附件的邮件
- ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
- C#发送内置图片html格式邮件的方法
- javascript验证邮件地址和MX记录的方法
- asp+JMAIL实现发送邮件