[TOC]
## phpMailer 的特点
phpMailer 是一个非常强大的 ph p发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。
**phpMailer 的特点:**
* 1、在邮件中包含多个 TO、CC、BCC 和 REPLY-TO。
* 2、平台应用广泛,支持的 SMTP 服务器包括 Sendmail、qmail、Postfix、Gmail、Imail、Exchange 等等。
* 3、支持嵌入图像,附件,HTML 邮件。
* 4、可靠的强大的调试功能。
* 5、支持 SMTP 认证。
* 6、自定义邮件头。
* 7、支持 8bit、base64、binary 和 quoted-printable 编码。
phpmailer 安装或者下载方式:
1、从 github 上下载:[https://github.com/PHPMailer/PHPMailer/](https://github.com/PHPMailer/PHPMailer/)
2、使用 composer 安装:
~~~
composer require phpmailer/phpmailer
~~~
发送之前需要拥有自己的邮件服务器,测试的时候其实用自己申请的免费邮箱最方便了,不需要自己再搭建服务器了,可能要配置邮箱的SMTP服务,大部分公共邮箱(163、qq等)为了安全默认是关闭的。
网易邮箱配置如下图:
![](https://www.runoob.com/wp-content/uploads/2018/09/201102010936447869c.png)
QQ 邮箱相关配置如下图:
| 邮箱 | POP3服务器(端口995) | SMTP服务器(端口465或587) |
| --- | --- | --- |
| qq.com | pop.qq.com | smtp.qq.com |
## 163邮箱测试,先开启SMTP
![](https://img.kancloud.cn/9b/92/9b929a2d56bb297fe1b814049b0e494f_1089x735.png)
当然除了网易和 QQ 邮箱其他邮箱也是可以的,下面给出 php 代码示例:
## 实例
~~~
use PHPMailer\PHPMailer\PHPMailer
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//服务器配置
$mail->CharSet ="UTF-8"; //设定邮件编码
$mail->SMTPDebug = 0; // 调试模式输出
$mail->isSMTP(); // 使用SMTP
$mail->Host = 'smtp.163.com'; // SMTP服务器
$mail->SMTPAuth = true; // 允许 SMTP 认证
$mail->Username = 'xxxx@163.com'; // SMTP 用户名 即邮箱的用户名
// $mail->Password = 'ZGxxxxxxxx'; // SMTP 密码 部分邮箱是授权码(例如163邮箱)
$mail->SMTPSecure = 'ssl'; // 允许 TLS 或者ssl协议
$mail->Port = 465; // 服务器端口 25 或者465 具体要看邮箱服务器支持
$mail->setFrom('xxxx@163.com', 'Mailer'); //发件人
$mail->addAddress('xxxx@163.com', 'Joe'); // 收件人
//$mail->addAddress('ellen@example.com'); // 可添加多个收件人
$mail->addReplyTo('xxxx@163.com', 'info'); //回复的时候回复给哪个邮箱 建议和发件人一致
//$mail->addCC('cc@example.com'); //抄送
//$mail->addBCC('bcc@example.com'); //密送
//发送附件,文件目录我是laravel,存的文件目录再public下面,所以一下路径是对的
// $mail->addAttachment('./upload/files/xy.zip'); // 添加附件,用这个显示名称默认文件名称
// $mail->addAttachment('./upload/files/thumb-1.jpg', 'new.jpg'); // 发送附件并且重命名,用这个显示名称可以自定义
//如果需要在邮件内容里面贴图片,需要填写下面语句,然后再html代码里面使用<img src="cid:weixin_img" >来接收
//切记,如果附件和图片同时存在,需要 先添加附件再添加图片,不然图片不显示(PS:发现也没用了,2个不能同时存在, 目前没有找到解决办法,如果你能解决了给我留个言呗,谢谢)
$this->mail->addEmbeddedImage('./weixin.jpg','weixin_img'); // 添加图片
//Content
$mail->isHTML(true); // 是否以HTML文档格式发送 发送后客户端可直接显示对应HTML内容
$mail->Subject = '这里是邮件标题' . time();
$mail->Body = '<h1>这里是邮件内容</h1>' . date('Y-m-d H:i:s');
$mail->AltBody = '如果邮件客户端不支持HTML则显示此内容';
$mail->send();
return ['code' => 0, 'msg' => '邮件发送成功', 'response' => []];
} catch (\Exception $e) {
return ['code' => 1, 'msg' => $mail->ErrorInfo, 'response' => []];
}
~~~
附件目录结构
![](https://img.kancloud.cn/2d/4f/2d4ff8c366e6cf53acee9cafd4ee0471_655x195.png)
## 发送完带附件的邮件界面如下
![](https://img.kancloud.cn/7d/ff/7dff466c57783d0095f76d03eacc15ac_687x406.png)
~~~
文章来源:https://www.liminghulian.com/article/98
~~~
- PHP书写规则
- 代码缩进
- 大括号{ }书写规则
- 变量赋值对齐
- if条件判断规范
- 避免嵌入式赋值
- 函数和方法的注释
- 项目规范
- 业务逻辑logic
- model模型
- 控制器
- view视图
- 定制项目开发
- 接口输出变量格式
- mysql设计规范
- 二维码系列
- php 用phprqcode 生成简单的二维码
- 小程序二维码
- 其他小工具
- 获取单个汉字拼音首字母
- js 调起打印多出一张空白的问题?
- php 2张图片合拼
- 判断一个汉字可以等于1个字符,2个字符,3个字符
- 微信小程序获取页面路径
- 小程序js、canvas实现矩形圆角、圆形头像图片
- php phpMailer 发送邮件(亲测有效)
- 系统配置表
- php 用tcpdf 生成pdf
- PHP mkdir():创建目录
- php 通过svg动态生成生成后缀图标
- php 本地安装SSL证书
- php 生成首字母头像
- php 接口数据压缩返回,减少带宽
- PHP向二维数组多维数组追加相同元素
- php 指定时间戳上加上一天,一个月,一年的方法
- Spreadsheet 表格生成
- php 多维数组排序 多维数组按照某个字段排序
- php根据开始和结束时间获取期间日期
- php 获取本周、上周、本月、上月及指定时间所在周、月的起止时间
- php GeoIP2通过ip获取国家和地区城市
- 奇葩报错问题
- session赋值报错
- 服务器配置lnmp
- 开启mysql binglog 日志
- lnmp 开启远程访问3306
- 开启mysql 慢日志查询
- 开通Liunx 3306 端口(远程连接开放)
- 搭建lnmp
- liunx 多台服务器搭建共享文件夹图片文件夹
- liunx 操作命令1
- nginx专区
- 禁止外部ip访问
- 强制跳转到https
- mysql专区
- 版本5.7报错 only_full_group_by
- 把同一张表的一个字段的内容复制到另一个字段里
- lnmp关闭严格模式
- mysql 两张不同结构的表连表查询,合并,并分页,排序 教你如何实现UNION
- mysql 查询一张表中某个字段不同状态的数量统计
- mysql数据库快速插入百万条级别的测试数据
- MySQL EXPLAIN 详解,可用EXPLAIN来分析优化数据库sql语句
- mysql 三星索引
- mysql 返回数据排名查询获取排名的方法,亲测有效
- mysql使用查询出来的值并且更新update新的表报错?叫你一招
- mysql 怎样自定义in查询操作排序
- mysql 百万级别和千万级数据分页查询性能优化
- mysql 查询某个字段按照逗号分割返回
- mysql 用sql命令导入数据库
- mysql 根据某个字段的值匹配替换某个值
- Mysql中分组后取最新的一条数据排序
- Certbot-免费的https证书
- session_start()报错问题
- 文件大打不开?代码实现分割
- windows服务器专区
- apache 突然重启动不了
- windows 定时任务
- liunx专区
- liunx 定时器检查php是否能访问,重启
- liunx 操作命令
- 定时器 tp5 命令行
- liunx查看端口是否开放
- liunx上传或者下载本地文件
- 前端
- jq克隆html
- Jquery添加元素(append,prepend,after,before四种方法区别对比)
- 小程序switch样式修改
- css div 里面模块 平均展开
- 安全小学堂
- 验证码一次一码
- 实战thinkphp6
- 前言
- 中间件
- 开启多语言
- RabbitMQ 专区
- 下载RabbitMQ
- ftp专区
- Linux安装vsftpd及配置详解
- 小程序栏目
- 微信小程序封装统一接口请求api数据
- 云数据库
- 小程序云开发更新云函数数组的某一项,并且某个是变量代替
- php面试总结
- Mysql面试
- PHP面试知识
- Thinkphp框架小知识
- fastadmin 文档
- fastadmin js 渲染 动态下拉(SelectPage)组件
- fastadmin 列表搜索栏 支持三级联动 地区选项
- fastadmin searchList组件自定义数据返回
- 开发工具
- phpstorm 一直在Indexing,一直加载索引,无法正常使用
- PHP专区
- session 工作流程
- Redis
- php redis 基本操作
- SourceTree 3.3.9跳过注册安装
- composer 专区
- 手把手教你写一个composer包
- freessl证书申请