ThinkPHP3.2 使用PHPMailer 发送邮件

时间:2022-03-17 07:43:08

        公司做项目,要用到发邮件验证的功能,用的框架是ThinkPHP,然后查了下,知道可以使用PHPMailer 来进行邮件的发送,但是我在网上看了很多人写的文章,试了好多次都没有成功!但是还是从他们的文章中学到了一些,于是自己根据错误查找啊什么滴!最后终于成功了!这里主要是把这个使用过程做详细说明,并且强调出里面应该注意的地方,争取让看的人照着步骤做一定不会出错!

1.首先,我们要下载PHPMailer ,这里我推荐大家到github上面下载全部,要不里面很容易出错的!因为从别处下载的文件里面都不全,会少需要的类啊什么的!(比如,有些下载文件中就不会包含class.smtp.php 这个文件,那么你在调用过程中有对这个类初始化的地方,就会报 class smtp not found 的错误)!

github地址:https://github.com/Synchro/PHPMailer   点击那个Download ZIP (这里下载的是文件最全的,需要的都在里面,当然也有你用不到了,这个就靠你自己摸索啦!)

ThinkPHP3.2 使用PHPMailer 发送邮件

2.下载完成后,将文件解压缩,并将文件名字命名为PHPMailer

ThinkPHP3.2 使用PHPMailer 发送邮件

3.接着将整个文件夹拷贝到ThinkPHP\Library\Vendor 目录下面

ThinkPHP3.2 使用PHPMailer 发送邮件

4.到这里,发送所需要的类就都有了,我们主要使用的是SMTP 方式,所以其实主要的是下面这三个类,打开PHPMailer 文件夹可以看到,那个PHPMailerAutoload.php 后面再配置文件中会用到

ThinkPHP3.2 使用PHPMailer 发送邮件

5.我使用的是qq邮箱,这里我先教大家怎么开通qq邮箱的SMTP,其实很简单,这里后面会用到的!(其他邮箱的设置方式应该雷同)

5.1首选登录qq邮箱,在最上面那里找到设置,点击打开

ThinkPHP3.2 使用PHPMailer 发送邮件


5.3下拉,找到账号安全和它下面的内容

ThinkPHP3.2 使用PHPMailer 发送邮件


5.4首先我们需要设立一个独立密码,这里我已经设置过了,就不打开设置了,但是需要注意,设置独立密码需要邮箱进行了实名认证啊什么的,你进去后如果你没有设置它会提示的!(这个独立密码就是后面要填的那个密码
设置好独立密码后,就可以点击开启服务中的POP3/SMTP  IMAP/SMTP服务后面的相应按钮,开启这两个服务!(这里你可以点击服务后面括号内的链接查看一些我们后面需要的东西)下图就是我点了如何使用Foxmail等软件收发邮件后能看到的一个内容!

ThinkPHP3.2 使用PHPMailer 发送邮件


6.开启服务后,我们就需要在自己的项目目录(不是ThinkPHP框架中的)的Conf\config.php中进行配置了

ThinkPHP3.2 使用PHPMailer 发送邮件

    // 配置邮件发送服务器
<span style="color:#cc66cc;">'MAIL_HOST' =>'smtp.qq.com',//smtp服务器的名称(这里我使用qq的smtp,就是5.4中看到的那个内容)</span>
'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证
'MAIL_USERNAME' =>'88888888@qq.com',//你的邮箱名
'MAIL_FROM' =>'88888888@qq.com',//发件人地址(与你的邮箱名相同)
'MAIL_FROMNAME'=>'大学派',//发件人姓名
<span style="color:#ff0000;">'MAIL_PASSWORD' =>'88888888',//邮箱密码(这里注意要是你开通时的独立密码)</span>
'MAIL_CHARSET' =>'utf-8',//设置邮件编码
'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件

7.配置完成后,我们需要在自己的项目目录中的Common 下建立function.php中添加如下代码,写一个函数

ThinkPHP3.2 使用PHPMailer 发送邮件

<?php
/**
* 邮件发送函数
*/
function sendMail($to, $title, $content) {

<span style="color:#cc66cc;">Vendor('PHPMailer.PHPMailerAutoload'); (这里就是我在第四步中提到了那个PHPMailerAutoload.php)当然,这里的目录结构可以根据你的实际目录进行变换 </span>
$mail = new PHPMailer(); //实例化
$mail->IsSMTP(); // 启用SMTP
$mail->Host=C('MAIL_HOST'); //smtp服务器的名称(这里以QQ邮箱为例)
$mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证
$mail->Username = C('MAIL_USERNAME'); //你的邮箱名
$mail->Password = C('MAIL_PASSWORD') ; //邮箱密码
$mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址)
$mail->FromName = C('MAIL_FROMNAME'); //发件人姓名
$mail->AddAddress($to,"尊敬的客户");
$mail->WordWrap = 50; //设置每行字符长度
$mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件
$mail->CharSet=C('MAIL_CHARSET'); //设置邮件编码
$mail->Subject =$title; //邮件主题
$mail->Body = $content; //邮件内容
$mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示
return($mail->Send());
}
?>
8.然后我们就可以在需要发送邮件的地方来调用这个函数啦!
我是在Index下调用了

ThinkPHP3.2 使用PHPMailer 发送邮件

<span style="font-family:Microsoft YaHei;font-size:18px;"><?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$email = '2546129013@qq.com'; //PS:这不两会嘛,反映民情给*的邮件~~
$title = '我成功啦'; //标题
$content = '希望你也成功!'; //邮件内容
$result = SendMail($email,$title,$content); //直接调用发送即可
dump($result);
if(empty($result)){
echo '3';
}else{
echo '4';
}
}
}</span>
9.访问http://localhost/testemail/index.php/Home/Index/  后,我的邮箱就会接收到发过来的邮件了

ThinkPHP3.2 使用PHPMailer 发送邮件


到此,我成功了,希望你也成功,如果你在弄得过程中有什么问题,欢迎咨询,一定尽力帮忙!!~~