thinkphp5使用PHPMailer发送邮件
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(" 你的标题内容 ") . "?=";