使用XAMPP发送邮件时出现STARTTLS错误求助
解决XAMPP中mail()函数SMTP 530 5.7.0 STARTTLS命令错误
你在使用XAMPP搭建带提交表单的网站时,调用mail()函数发送邮件遇到以下错误:
Warning: mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. g20-20020a17090a7d1400b001fd674057d2sm3458984pjl.48 - gsmtp in C:\xampp\htdocs\contact.php on line 25
你的配置文件如下:
php.ini 配置
[mail function] SMTP=smtp.gmail.com smtp_port=587 sendmail_from = ***@gmail.com ;sendmail_path = ;mail.force_extra_parameters = mail.add_x_header=Off mail.log = "C:\xampp\mailoutput\mail.log"
sendmail.ini 配置
[sendmail] smtp_server=smtp.gmail.com smtp_port=587 smtp_ssl=tls ;default_domain=mydomain.com error_logfile=error.log ;debug_logfile=debug.log auth_username=***@gmail.com auth_password=*** pop3_server=pop.gmail.com pop3_username=***@gmail pop3_password=*** force_sender=***@gmail.com force_recipient= hostname=smtp.gmail.com
你尝试过修改SMTP地址为tls://smtp.gmail.com(连接失败)、ssl://smtp.gmail.com+端口465(仍报相同错误),都没解决问题。
核心修复步骤
启用sendmail路径:在php.ini的
[mail function]区块中,取消sendmail_path的注释,设置为XAMPP自带的sendmail.exe路径:sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"注意路径要和你的XAMPP实际安装路径一致。
替换为Gmail应用专用密码:Gmail已不再支持普通密码登录SMTP,必须用应用专用密码:
- 确保谷歌账号开启了2步验证
- 登录谷歌账号安全设置页面,生成应用专用密码
- 将sendmail.ini中的
auth_password替换为这个生成的密码
移除无用的POP3配置:sendmail.ini里的POP3配置完全多余,直接注释或删除:
;pop3_server=pop.gmail.com ;pop3_username=***@gmail ;pop3_password=***重启Apache服务:所有配置修改完成后,必须重启XAMPP的Apache服务,让新配置生效。
可选排查步骤
- 开启sendmail的调试日志:取消sendmail.ini中
debug_logfile的注释,生成的日志可以帮你排查连接或认证的细节问题。 - 查看php的mail.log:确认邮件请求是否正确传递给sendmail进程。
内容的提问来源于stack exchange,提问作者Kyle Sebring
相关产品推荐
相关产品推荐

