Windows Server 2012中PHP Sendmail连接超时问题求助
解决Windows Server 2012 XAMPP中Sendmail连接Gmail SMTP超时问题
核心排查与修复步骤
1. 校验Sendmail配置文件
打开XAMPP下Sendmail目录的sendmail.ini,确认以下关键配置无误:
smtp_server=smtp.gmail.com smtp_port=587 smtp_ssl=tls auth_username=你的Gmail邮箱地址 auth_password=你的Gmail应用专用密码
注意:Gmail目前强制要求使用应用专用密码,若账号开启两步验证,需在Google账号后台生成对应专用密码;未开启两步验证的账号,需先启用"不太安全的应用访问"(若该选项仍可用),优先推荐使用应用专用密码。
2. 测试服务器到Gmail SMTP的网络连通性
在Windows Server 2012的命令提示符(CMD)中执行命令,验证端口连通性:
telnet smtp.gmail.com 587
- 若连接失败:说明服务器所在网络(如企业内网、机房)可能屏蔽了587端口,或出站流量被路由规则限制,需联系网络管理员确认。
- 若连接成功:创建简单PHP测试脚本
test_mail.php验证邮件发送逻辑:
<?php $to = '你的测试邮箱地址'; $subject = '服务器邮件测试'; $message = '这是来自Windows Server的测试邮件'; $headers = 'From: 你的Gmail邮箱' . "\r\n" . 'Reply-To: 你的Gmail邮箱' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); if(mail($to, $subject, $message, $headers)) { echo '邮件发送成功'; } else { echo '邮件发送失败'; } ?>
运行脚本后查看Sendmail目录下的error.log,定位具体错误。
3. 检查PHP.ini的邮件配置
打开XAMPP下PHP目录的php.ini,确认Sendmail路径配置正确:
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
确保路径与你的XAMPP实际安装路径一致,无拼写错误。
4. 排查Windows Server的隐性网络限制
- 检查Windows Defender高级安全设置中的出站规则,确认没有阻止
sendmail.exe访问网络的规则; - 若服务器使用代理,需在
sendmail.ini中添加代理配置:
smtp_proxy=代理服务器地址 smtp_proxy_port=代理端口
5. 尝试更换SMTP端口/协议
若587端口持续超时,切换至465端口(SSL协议),修改sendmail.ini:
smtp_port=465 smtp_ssl=ssl
保存后重新测试邮件发送。
内容的提问来源于stack exchange,提问作者valery
相关产品推荐
相关产品推荐

