thinkphp5使用PHPMailer发送邮件

2019-12-27 17:42:05 浏览数 (1)

PHPMailer是一个用于发送电子邮件的PHP函数包。直接用PHP就可以发送,无需搭建复杂的Email服务。今天来说一下如何在thinkphp框架中使用此扩展类。

一、功能描述

*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址

*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable

*.支持SMTP验证

*.支持冗余SMTP服务器

*.支持带附件的邮件和Html格式的邮件

*.自定义邮件头

*.支持在邮件中嵌入图片

*.调试灵活

*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等

*.可运行在任何平台之上

二、下载安装

本人通过composer进行安装,在已安装好的tihnkphp框架内public同级目录下右键使用git(Git安装),复制如下命令并回车:

代码语言:javascript复制
composer require phpmailer/phpmailer

效果如下:

composer会自行下载,并配置compoer.json文件,待完成后可在vendor目录下查看。如下图:

三、使用

使用方式如下:

代码语言:javascript复制
<?php
/**
 * Created by PhpStorm.
 * User: shenlin
 * Date: 2019/4/21
 * Time: 11:01
 */
namespace appindexcontroller;
use thinkController;
use PHPMailerPHPMailerPHPMailer;

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、添加多个收件人:

代码语言:javascript复制
$mail->addAddress('ellen@example.com');

2、抄送 

代码语言:javascript复制
$mail->addCC('cc@example.com');

3、密送 

代码语言:javascript复制
$mail->addBCC('bcc@example.com');

4、发送附件

代码语言:javascript复制
 $mail->addAttachment('../xy.zip');

5、发送附件并且重命名

代码语言:javascript复制
$mail->addAttachment('../thumb-1.jpg', 'new.jpg');

6、查看错误信息

代码语言:javascript复制
$mail->ErrorInfo

7、解决非标题汉字乱码

在PHPMailer 库文件class.phpmailer.php中, 找到 public $CharSet = 'iso-8859-1'; 改成 public $CharSet = 'UTF-8'; 并且 把文件保存为UTF-8格式。

8、解决标题汉字乱码

代码语言:javascript复制
$mail->Subject ="=?utf-8?B?" . base64_encode(" 你的标题内容 ") . "?=";

0 人点赞