对于程序员来说,项目中邮件发送是常用的一个功能, 我在这不讲源码,只讲如何能快速地实现.
phpMailer 是一个非常强大的 php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、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 安装或者下载方式:
从 github 上下载: https://github.com/PHPMailer/PHPMailer/
![27512058114ad172e6c0a8509483aa1f.png](https://img-blog.csdnimg.cn/img_convert/27512058114ad172e6c0a8509483aa1f.png)
就这三个文件
大家实在下载不来的可以直接找我要,没关系的
php开启socket和openssl扩展,这种错误到时候解决就行
到这一步,我们就可以把这个压缩包解压到我们的项目中了,对于php来讲,如果我们用了框架,比如think PHP, 那我们把他放到extend目录下,如下图:
![9621913eb494d505065b8063052e9445.png](https://img-blog.csdnimg.cn/img_convert/9621913eb494d505065b8063052e9445.png)
think PHP
调用时用如下:
![fe4993abbe74b9b5bab8a2388eb3728b.png](https://img-blog.csdnimg.cn/img_convert/fe4993abbe74b9b5bab8a2388eb3728b.png)
如果没用框架,那就放到公共的三方引用目录里面或直接就放到你当前php文件的同级目录下,没什么关系,引用路径写对就行,如下图:
![5c0ef424e6d8107755f98663b9f4575c.png](https://img-blog.csdnimg.cn/img_convert/5c0ef424e6d8107755f98663b9f4575c.png)
调用时如下
![39d51e15ec8d7634d63f795b07481492.png](https://img-blog.csdnimg.cn/img_convert/39d51e15ec8d7634d63f795b07481492.png)
到这一步相信大家都没什么问题,下面重点谈谈代码层面的问题:
发送之前需要拥有自己的邮件服务器,测试的时候其实用自己申请的免费邮箱最方便了,不需要自己再搭建服务器了,可能要配置邮箱的SMTP服务,大部分公共邮箱(163、qq等)为了安全默认是关闭的。
网易邮箱配置如下图:
![4e08f51fd2001ca1eaf9151255147ef1.png](https://img-blog.csdnimg.cn/img_convert/4e08f51fd2001ca1eaf9151255147ef1.png)
QQ 邮箱相关配置如下图:
![52a1d0a1f71097bef8c35024175a64b6.png](https://img-blog.csdnimg.cn/img_convert/52a1d0a1f71097bef8c35024175a64b6.png)
我们调试的时候一般都是用免费的邮件服务器,QQ或163, 用QQ 邮箱时,大家容易忽略一个问题,那就是QQ邮箱走465端口,ssl协议,所以我们如下配置:
![e01d3ebab3b809f40a13c616faa81e59.png](https://img-blog.csdnimg.cn/img_convert/e01d3ebab3b809f40a13c616faa81e59.png)
注意一点, 密码为单独的授权码,不是你的邮箱密码,有人卡在这了,哈哈
如果用别的邮箱,可以走25端口,但这有一点特别坑,就是阿里云默认25端口是关的,所以没办法,要么不用25端口,要么就是向阿里云申请25端口,要么就是换服务器供应商,如IDC等等,
![43a814e39905e184af8d5c9ac4b7531e.png](https://img-blog.csdnimg.cn/img_convert/43a814e39905e184af8d5c9ac4b7531e.png)
用25端口就不用ssl协议了,
![5c99899520cfad46bc572310d8e449a4.png](https://img-blog.csdnimg.cn/img_convert/5c99899520cfad46bc572310d8e449a4.png)
具体代码就是这一条写不写的区别.
还有就是同时发送多人和多张附件的问题:
![b021aee0dd6143f9cee67f3df39d67a9.png](https://img-blog.csdnimg.cn/img_convert/b021aee0dd6143f9cee67f3df39d67a9.png)
发送多人,处理参数,循环
![5dc5d14ba20d80b85e0c0666e07bcbb7.png](https://img-blog.csdnimg.cn/img_convert/5dc5d14ba20d80b85e0c0666e07bcbb7.png)
发送附件,处理参数,循环
实在是没什么好说的,就是附件路径要直接指向你的二进制文件,相对路径和绝对路径都行,但不是网图链接或三方图片服务器链接,比如七牛云和阿里云oss,这种只能先下载到本地或服务器才行,注意个别下载授权问题,你懂的
到这一步差不多了,直接放代码:
/**
到这一步,大家可以自己进行测试了。
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家 ,需要请戳这里链接 或 者关注咱们下面的知乎专栏PHP架构师圈子zhuanlan.zhihu.com
![ec22f029d5667a21f9e01f3daa011d97.png](https://img-blog.csdnimg.cn/img_convert/ec22f029d5667a21f9e01f3daa011d97.png)