PHP 如何发邮件
在工作和生活中,我们常常需要用代码自动发送通知——比如用户注册成功的确认信、订单发货提醒,甚至是网站的异常报错通知。对于很多刚接触后端开发的人来说,PHP作为常用的后端语言,发邮件是一项实用且高频的需求,而且操作并不复杂。
先搞懂发邮件的核心逻辑
很多人会觉得“发邮件需要专门的邮箱服务器吧?”其实不用那么复杂,你可以用自己常用的QQ邮箱、163邮箱来配合PHP实现,核心只需要两步:先连接到邮箱服务商的SMTP服务器(简单说就是专门负责发邮件的“邮局”),再把你要发的内容填进去发送。

举个生活化的例子:就像你要给朋友寄信,不用自己盖个邮局,直接把信塞进小区门口的快递柜,快递柜会帮你把信送到朋友手里——这个快递柜就是SMTP服务器,你自己的邮箱就是发件人地址,朋友的邮箱就是收件人地址。
用PHP发邮件的最简单方法
现在PHP有专门的工具包叫PHPMailer,不用自己手写复杂的邮件连接代码,几行代码就能搞定。下面是最基础的实现步骤,都是可以直接用的代码片段:
首先,你需要先安装PHPMailer,新手推荐用Composer(PHP常用的依赖管理工具)安装,打开命令行输入composer require phpmailer/phpmailer就能完成安装。如果不想用Composer,也可以去GitHub上下载PHPMailer的压缩包,解压后引入文件就行。
安装完成后,写代码的流程很清晰:先创建PHPMailer的实例,然后配置邮箱信息——比如用QQ邮箱的话,发件人邮箱填你的QQ号加@qq.com,SMTP服务器填smtp.qq.com,端口用465或者587;这里要注意,别填邮箱的登录密码,要填专门的“授权码”,这个在邮箱的设置里就能找到,比如QQ邮箱需要先开启SMTP服务,再生成授权码。
然后设置发件人、收件人、邮件主题和内容,内容还可以支持HTML格式,比如给邮件加个好看的排版,像“您的订单已发货,点击链接查看物流”这种带链接的内容也能直接写。最后调用发送方法,成功的话会返回true,失败的话能拿到错误信息方便排查。
举个实际的小例子,比如给用户发注册确认信,代码里只要把收件人改成用户注册时填的邮箱,主题改成“欢迎加入我们的网站”,内容里加个激活链接就行,不用改其他配置。
常见的坑和解决办法
很多人第一次写代码会遇到问题,主要集中在这几个地方:
一是授权码填错,输了邮箱的普通密码肯定发不出去,一定要确认是邮箱服务商给的专属授权码;二是SMTP服务器的端口和加密方式不匹配,比如QQ邮箱用465端口就要用SSL加密,用587端口用TLS加密,选错了会连接失败;三是服务器的防火墙没开,有些云服务器默认会屏蔽邮件端口,需要在后台把对应端口放开。
另外,如果是本地测试的话,可能会有环境限制,比如本地的PHP环境可能缺少某些扩展,这时候可以先把代码放到线上服务器测试,或者用工具开启对应扩展就行。
实用的小技巧
如果要批量发邮件,比如给100个用户发 newsletter,别直接循环调用发送方法,不然可能会被邮箱服务商当成垃圾邮件屏蔽——可以设置每次发完休息几秒,或者用邮箱的群发功能,PHPMailer也支持批量收件人分组的设置,不会影响送达率。
还有,邮件内容尽量别用太花哨的广告词,也别加太多链接,不然容易被当成垃圾邮件退回,这也是发邮件时要注意的小细节。
这样一步步下来,用PHP发邮件就不是什么难事了,不管是做个人项目还是工作里的自动化通知,这套方法都能直接套用。