You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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,必须用应用专用密码:

    1. 确保谷歌账号开启了2步验证
    2. 登录谷歌账号安全设置页面,生成应用专用密码
    3. 将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 07:03:30