如何在本地XAMPP服务器使用PHP代码发送邮件?
在XAMPP环境中实现PHP邮件发送
嘿,我来帮你搞定这个问题!首先先揪出你代码里的一个小坑,再一步步配置服务器设置,就能顺利发邮件啦。
第一步:修正你的PHP代码
你代码里的$headers赋值有覆盖问题!你先设置了MIME版本和内容类型,但最后一行用了=而不是.=,这会把之前的配置全部覆盖,导致邮件的MIME格式失效。修正后的代码如下:
<?php if (isset($_POST["send"])) { $to = $_POST["to"]; $subject = $_POST["subject"]; $message = $_POST["message"]; // 正确拼接headers,避免覆盖之前的配置 $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; $headers .= "From: your@email-address.com\r\n"; // 可选:添加回复地址,提升邮件正规性 $headers .= "Reply-To: your@email-address.com\r\n"; if (mail($to, $subject, $message, $headers)) { echo "SUCCESS"; } else { echo "ERROR"; } } ?>
第二步:配置XAMPP的邮件发送服务
XAMPP默认的PHP mail()函数没有配置发送服务器,所以我们需要手动配置,这里给你两种常用方案:
方案一:使用XAMPP自带的Sendmail工具
修改
php.ini文件
打开XAMPP安装目录下的php/php.ini,找到[mail function]区块,修改为以下内容(替换成你的邮箱信息):SMTP=smtp.example.com # 替换成你的邮箱SMTP服务器,比如smtp.gmail.com、smtp.qq.com smtp_port=587 # 对应端口:Gmail用587,QQ邮箱用587/465 sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" # 确保路径和你的XAMPP安装路径一致 mail.add_x_header=Off配置
sendmail.ini文件
打开XAMPP目录下的sendmail/sendmail.ini,修改核心配置:smtp_server=smtp.example.com # 和php.ini里的SMTP保持一致 smtp_port=587 smtp_ssl=tls # 按邮箱要求选tls或ssl,Gmail用tls auth_username=your@email-address.com # 你的邮箱账号 auth_password=your_email_password # 注意:Gmail需要用「应用专用密码」(需开启两步验证),普通密码会被拦截 force_sender=your@email-address.com
方案二:直接配置PHP的SMTP参数(无需Sendmail)
如果你不想用Sendmail,可以直接在php.ini里配置SMTP认证:
[mail function] SMTP=smtp.gmail.com smtp_port=587 auth_username=your@email-address.com auth_password=your_app_password sendmail_path="" mail.add_x_header=Off
第三步:重启Apache服务
修改完配置文件后,一定要重启XAMPP的Apache服务器,让新配置生效。之后提交你的HTML表单,就能测试邮件发送啦。
常见问题提示
- 用Gmail的话,必须开启两步验证,然后生成「应用专用密码」替代普通密码,否则会被Google拦截。
- 检查防火墙或杀毒软件是否拦截了XAMPP的邮件请求。
- 测试邮件可能被归为垃圾邮件,记得去收件箱的垃圾邮件文件夹查看。
内容的提问来源于stack exchange,提问作者Dipesh Karki
相关产品推荐
相关产品推荐

