thinkphp使用phpmailer的步骤及问题记录

[php] 2024-04-27 圈点849

摘要:thinkphp使用phpmailer的步骤及问题记录,稍微看了一下源代码,phpmailer的代码4K+行;150K左右;smtp只有50K左右;看起来还是挺不错的。那就试试吧。将phpmailer加入到thinkphp还是要动点手术的。

thinkphp使用phpmailer的步骤及问题记录,如何使用phpmailer呢?先吹吹水,曾几何时,都是直接写代码实现,一查发现使用这个挺多的,源代码开放;那就顺便试试试啦;


稍微看了一下源代码,phpmailer的代码4K+行;150K左右;smtp只有50K左右;看起来还是挺不错的。那就试试吧。

将phpmailer加入到thinkphp还是要动点手术的。


用途说明:调用phpmailer的smtp方法,实现用QQ,163等邮箱发送邮件

1,官方下载phpmailer,从git库下载即可。


2,文件准备

其实只要2个文件:一个是phpmailer类文件,一个是smtp类文件。

从phpmailer的原官方下载的文件风格和thinkphp稍微有点区别。将文件名改成符合thinkphp风格的。

首字母大写,最终为: Phpmailer.class.php


3,修改调试里面的namespace

增加namespace

鉴于安全,不细说了,按照习惯即可

在这两个类中都添加上对应的namespace.


4,调试修改。

发邮件代码如下:

$mail = new PHPMailer();

$mail->IsSMTP(); // 使用SMTP方式发送

$mail->CharSet='UTF-8';// 设置邮件的字符编码

$mail->Host = 'smtp.163.com'; // 您的企业邮局服务器

$mail->Port = 25; // 设置端口

$mail->SMTPAuth = true; // 启用SMTP验证功能

$mail->Username = ''; // 邮局用户名(请填写完整的email地址)

$mail->Password = ""; // 邮局密码

$mail->From = ''; //邮件发送者email地址

$mail->FromName = "super_man";

$mail->AddAddress('', '');//收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")


$mail->IsHTML(true); // set email format to HTML //是否使用HTML格式

$mail->Subject = '我就是试试';//"PHPMailer测试邮件"; //邮件标题

$mail->Body = "<b>测试邮件</b>"; //邮件内容

if(!$mail->Send())

{

echo "邮件发送失败. <p>";

echo "错误原因: " . $mail->ErrorInfo;

}else{

echo "发送成功了,嘛嘛再也不担心我不会发邮件了!";

}


5,问题解决

在调试中会发现几个问题

1),提示PHPMailer Exception not found 

解决办法如下:

查看代码发现是4027行的问题,具体一看,扩展类不存在?原来是在头部增加了namespace的原因,在这一行上面,加上一句:use Think\Exception 马上解决。


2),提示PHPMailer SMTP not found

解决办法如下:

问题的原理一样,查看代码发现其引用的是大写的SMTP,而前面已经修改其为Smtp,所以这里在对应的行里面将SMTP修改成Smtp即可。

thinkphp  phpmailer  

感谢反馈,已提交成功,审核后即会显示