添加From头后PHP mail()函数失效,求解决办法
PHP mail() 添加From头后失效的解决思路
我来帮你排查下这个问题——当你给headers添加From字段后mail()函数突然失效,大概率是邮件头格式错误或者服务器配置限制导致的,下面是几个实用的解决方向:
补全邮件头的换行符
邮件头的每个字段必须用\r\n来分隔,你原来的代码里添加From字段时没加这个换行符,会导致整个headers格式混乱,邮件服务器无法正确解析。正确的写法应该是:$headers .= "From: from@address.com\r\n";少了这个
\r\n是最常见的触发原因。验证发件人地址的合法性
很多服务器会限制From地址必须是当前服务器上的有效邮箱(比如和网站域名一致的邮箱,比如你的网站是yourdomain.com,就用support@yourdomain.com这类),如果随便填一个不存在的外部邮箱,服务器可能直接拒收请求。查看服务器邮件日志找具体错误
这是最直接定位问题的方法,Linux服务器的邮件日志一般在/var/log/mail.log或者/var/log/maillog路径下,登录服务器查看日志内容,里面会明确告诉你是格式错误、地址被拒绝还是其他配置问题。尝试添加Reply-To字段(可选)
部分服务器会要求同时配置Reply-To字段配合From,你可以尝试加上:$headers .= "Reply-To: from@address.com\r\n";这不一定是必须项,但可以作为排查的一个尝试方向。
检查语法细节
确认From字段有没有多余的空格、引号配对错误这类小问题,有时候不起眼的字符错误也会导致整个headers失效。
内容的提问来源于stack exchange,提问作者Jin
相关产品推荐
相关产品推荐

