PHPMailer是一个用于发送电子邮件的PHP函数包。直接用PHP就可以发送,无需搭建复杂的Email服务。今天来说一下如何在thinkphp框架中使用此扩展类。
一、功能描述
*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址
*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable
*.支持SMTP验证
*.支持冗余SMTP服务器
*.支持带附件的邮件和Html格式的邮件
*.自定义邮件头
*.支持在邮件中嵌入图片
*.调试灵活
*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等
*.可运行在任何平台之上
二、下载安装
本人通过composer进行安装,在已安装好的tihnkphp框架内public同级目录下右键使用git(Git安装),复制如下命令并回车:
composer require phpmailer/phpmailer
效果如下:
composer会自行下载,并配置compoer.json文件,待完成后可在vendor目录下查看。如下图:
三、使用
使用方式如下:
<?php
/**
* Created by PhpStorm.
* User: shenlin
* Date: 2019/4/21
* Time: 11:01
*/
namespace app\index\controller;
use think\Controller;
use PHPMailer\PHPMailer\PHPMailer;
class Email extends Controller
{
public function index()
{
$mail = new PHPMailer(); //实例化
$mail->IsSMTP(); // 启用SMTP
$mail->Host='smtp.163.com'; //smtp服务器的名称(这里以QQ邮箱为例)
$mail->SMTPAuth = TRUE; //启用smtp认证
$mail->Username ='*****'; //你的邮箱名
$mail->Password = '*****' ; //邮箱密码
$mail->From = '****'; //发件人地址(也就是你的邮箱地址)
$mail->FromName = '***管理员'; //发件人姓名
$mail->AddAddress('*****@qq.com',"******");
$mail->WordWrap = 50; //设置每行字符长度
$mail->IsHTML(TRUE); // 是否HTML格式邮件
$mail->CharSet='utf-8'; //设置邮件编码
$mail->Subject ='*******'; //邮件主题
$mail->Body = '********'; //邮件内容
$mail->AltBody = ""; //邮件正文不支持HTML的备用显示
$res = $mail->Send();
return $res;
}
}
四、注意事项
1、添加多个收件人:
$mail->addAddress('ellen@example.com');
2、抄送
$mail->addCC('cc@example.com');
3、密送
$mail->addBCC('bcc@example.com');
4、发送附件
$mail->addAttachment('../xy.zip');
5、发送附件并且重命名
$mail->addAttachment('../thumb-1.jpg', 'new.jpg');
6、查看错误信息
$mail->ErrorInfo
7、解决非标题汉字乱码
在PHPMailer 库文件class.phpmailer.php中, 找到 public $CharSet = 'iso-8859-1'; 改成 public $CharSet = 'UTF-8'; 并且 把文件保存为UTF-8格式。
8、解决标题汉字乱码
$mail->Subject ="=?utf-8?B?" . base64_encode(" 你的标题内容 ") . "?=";