已配置php.ini与sendmail.ini,PHP mail函数仍无法发送邮件求助
解决PHP mail函数配合Gmail SMTP发送失败的问题
检查Gmail账户权限
- 若你的Gmail账户开启了两步验证(2FA),绝对不能用原账户密码填在sendmail.ini的
auth_password里,必须登录Gmail的「安全性」设置页面,生成应用专用密码替换该字段。 - 若未开启2FA,需在Gmail安全性设置中开启「低安全性应用访问」(部分新账户可能已移除该选项,优先推荐用应用专用密码)。
补全sendmail.ini加密配置
587端口要求TLS加密,在sendmail.ini中添加以下两行:
smtp_ssl=tls hostname=smtp.gmail.com
完善邮件头信息
PHP mail函数默认的邮件头可能因缺少必要标识被拒收,修改测试代码补充头信息:
<?php $sub = "TEST"; $msg = "Sent"; $rec = "*******@gmail.com"; // 补充From和Reply-To头,需与sendmail.ini中的force_sender一致 $headers = "From: ******@gmail.com\r\n" . "Reply-To: ******@gmail.com\r\n" . "X-Mailer: PHP/" . phpversion(); if(mail($rec, $sub, $msg, $headers)){ echo "email sent"; }else{ echo "Error"; } ?>
查看日志定位问题
打开XAMPP的sendmail目录下的error.log和debug.log,里面会记录具体失败原因(比如认证失败、连接超时、加密错误等),根据日志针对性解决。
重启Apache服务
修改php.ini和sendmail.ini后,必须重启XAMPP的Apache服务,确保新配置生效。
内容的提问来源于stack exchange,提问作者Gh0st
相关产品推荐
相关产品推荐

