XAMPP Sendmail配置教程:本地邮件发送测试与调试
时间:2026-08-14 | 作者:深海捕梦者 | 阅读:0这一步别省:先下载最新版 fake-sendmail,再把 Gmail 的应用专用密码配好。
因为从 XAMPP 7.4+ 开始,sendmail 已经被移除了,所以需要手动放置 sendmail.exe 和对应的 ini 文件。SMTP 则要设置为 smtp.gmail.com:587。
与此同时,php.ini 里的 sendmail_path 必须带上 -t 参数,sendmail.ini 中的 auth_password 必须填写 16 位小写的应用专用密码,而且 force_sender 也要与其完全一致。
文件保存时编码要选 ANSI,最后启用 OpenSSL,重启 Apache 之后再进行测试。
要在XAMPP环境下让PHP的mail()函数真正发出测试邮件,必须补全缺失的sendmail.exe,并严格匹配SMTP服务商要求。
XAMPP 7.4+已彻底移除sendmail目录,直接编辑php.ini里的SMTP参数,或复制旧版sendmail.exe进去,都无效。Gmail/QQ邮箱还强制要求应用专用密码而非登录密码,填错就静默失败。
确认XAMPP版本与sendmail物理存在状态
打开命令行,执行dir C:xamppsendmail。
若提示“系统找不到指定的路径”,说明你用的是XAMPP 7.4或更新版本。【sendmail.exe物理上不存在,硬配sendmail.ini是白忙活】
不要尝试从网上下载“XAMPP自带sendmail”压缩包。那全是7.3及更早版本的残留物,与当前PHP 8.x不兼容。
去fake-sendmail for Windows下载最新release的zip包,如fake-sendmail-v1.0.0.zip。
解压后仅保留sendmail.exe和sendmail.ini两个文件。
部署sendmail.exe并配置基础路径
在C:xampp下手动新建文件夹:sendmail。
把下载解压出的sendmail.exe和sendmail.ini放入该目录。
打开C:xamppphpphp.ini,定位到[mail function]区块,修改以下三行,其余保持原样:
SMTP = smtp.gmail.comsmtp_port = 587sendmail_path = "C:xamppsendmailsendmail.exe -t"
注意:sendmail_path必须用英文双引号包裹完整路径,且末尾带-t参数。
漏掉它,sendmail.exe将无法读取邮件头中的To字段。
Gmail SMTP四要素精准配置
打开C:xamppsendmailsendmail.ini,全部清空,粘贴以下内容。逐项核对,不可跳过:
[sendmail]smtp_server=smtp.gmail.comsmtp_port=587error_logfile=error.logdebug_logfile=debug.logauth_username=your.name@gmail.comauth_password=abcd-efgh-ijkl-mnopforce_sender=your.name@gmail.com
【auth_password必须是Google账户开启两步验证后生成的16位应用专用密码,全小写、无空格、无连字符;填登录密码必定失败】
【force_sender必须与auth_username完全一致,否则Gmail返回553 5.7.1错误】
保存后,确保sendmail.ini编码为ANSI(非UTF-8),否则中文注释可能导致解析失败。
用记事本另存为时,编码选择“ANSI”。
启用OpenSSL并重启Apache
打开C:xamppphpphp.ini,搜索extension=openssl,删掉前面的分号取消注释。
进入XAMPP控制面板,点击Apache右侧的“Stop”,再点“Start”。
【改了php.ini不重启Apache,所有配置都不生效】
检查Apache日志窗口是否出现“Apache started”字样,没有报错即为成功。
编写测试脚本并验证日志
在C:xampphtdocs下新建testmail.php,内容如下:
$to = 'your.test@email.com';
$subject = 'XAMPP mail() test at ' . date('Y-m-d H:i:s');
$body = "This is a plain-text test email from XAMPP.nnTime: " . date('c');
$headers = "From: your.name@gmail.comrnReply-To: your.name@gmail.comrnMIME-Version: 1.0rnContent-Type: text/plain; charset=UTF-8";
if (mail($to, $subject, $body, $headers)) {
echo ' 邮件已提交至sendmail队列';
} else {
echo ' mail()调用失败';
}
?>
浏览器访问http://localhost/testmail.php,页面显示即表示PHP层调用成功。
优先查看debug.log
先直接看C:xamppsendmaildebug.log的最后一行,确认里面有没有Connected to smtp.gmail.com:587。
- 如果看到的是
Connection timed out,通常意味着端口或者服务器地址填错了。 - 如果出现
Authentication failed,马上核对应用专用密码是不是输错了,或者已经失效、过期了。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- XAMPP安全设置及修改MySQL数据库密码详细操作指南
- 时间:2026-07-03
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
