ThnikPHP 3.2 整合PHPmailer 发送SMTP邮件

网站使用TP3.2开发,须要使用SMTP邮件注册验证功能,网上研究不少内容,本身尝试而且整理以下 postbrid : There I am , in the world more exciting! www.ptbird.cnphp

转载请注明来源: http://www.ptbird.cn/2016/07/02/thnikphp/html

1. 下载PHPmailer并copy到目录
2. 进行config配置
3. 函数sendmail实现主要功能
4. 重要错误指出

1、下载PHPmailer并copy到网站目录中 一、OSC上的内容:http://www.oschina.net/p/phpmailer/ 二、压缩包中不少东西是没有用的,做为不研究直接使用来讲,只要保留如下文件便可linux

* class.phpmailer.php
* class.smtp.php
* class.pop3.php

三、将文件夹phpmailer复制到TP的Library/Vendor文件夹下(PHPmailer属于第三方类库,而且命名规范不符合TP的要求,因此应当使用第三方类库Vendor方式打开)以下图: 四、请注意文件夹名和文件名* 1) *Vendor引入的时候 Vendor(‘phpmailer.class#phpmailer’); 2) 为何使用#呢? phpmailer表明文件夹 . 后面的表明文件名 class.phpmailer(请比对图片) 3) 将 . 换成 # 能够避免在解析的时候解析出错,由于从根本原理上讲 vendor 也是经过import实现的(具体可参照TP官方文档) 2、进行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,服务器

3、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; }post

3、3.2 | 函数sendmail() 功能测试 参照sendmail解释参数:学习

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

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

4、错误提出网站

部分错误:

* 类没法引入:


* 
	* 文件夹的名称在Vendor是否正确
	* . # 是否出现问题(该问题通常在linux上出现)
	* 引入文件路径的大小写问题

* 特例:


* 
	* 出现 CLASS SMPT NOT FOUND 是 PHPmailer的文件错误,请下载正确文件

* 其余错误:


* 
	* 网上不少就不在这里一一赘述,关于报错的缘由请参照PHPMAILER的错误信息判断。

欢迎指正!By postbird 学习参照 :http://my.oschina.net/BearCatYN/blog/299192

相关文章
相关标签/搜索