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

为何wp_mail()在XAMPP本地环境无法正常工作?

搞定XAMPP本地环境下WordPress wp_mail()发不出邮件的问题

嘿,我看你在本地XAMPP环境折腾WordPress联系表单时,碰到wp_mail()死活发不出邮件的问题了。结合你的代码和本地环境的特性,我给你拆解下问题和解决办法:

一、先把代码里的坑填上

你的代码里有几个小问题,会直接导致邮件发送失败,先改了它们:

1. 邮件头格式错了!

你写的$headers拼接方式不对,From字段的正确格式应该是"网站名称 <发件人邮箱>",直接把网站名和邮箱拼一起会让邮件头不合法,邮件根本发不出去。

改完的headers代码应该是这样:

$headers = array(
    "From: " . get_option("blogname") . " <" . $email . ">",
    "Content-Type: text/html; charset=UTF-8" // 加这个还能支持HTML格式的邮件,可选
);

2. wp_mail()多传了个没用的参数

你调用wp_mail时最后加了个空数组array( '' ),这是用来传附件的,你既然没附件,直接删掉这个参数就行,省得搞出不必要的问题:

wp_mail( $to, $subject, $message, $headers );

3. 用户名验证可以用WordPress自带函数(可选优化)

你用正则验证用户名的写法有点老了,WordPress本身就有validate_username()函数,直接用它更靠谱:

if ( !validate_username( $name ) ) {
    echo sprintf( '<h5 class="form_erros">%s</h5>', __('Please Enter Valid Name!', 'promag') );
}

二、解决XAMPP本地没邮件服务器的问题

XAMPP默认是不带邮件发送服务的,这才是本地环境wp_mail()失效的核心原因!这里给你两个常用的解决办法,选一个顺手的就行:

方案1:用WP Mail SMTP插件(最简单,新手首选)

直接在WordPress后台装个WP Mail SMTP插件,它能替换默认的wp_mail()函数,通过第三方邮箱的SMTP服务发邮件。比如用QQ邮箱的话:

  • 先去QQ邮箱的「设置-账户」里开启SMTP服务,拿到授权码
  • 插件设置里选「Other SMTP」,填这些信息:
    • SMTP主机:smtp.qq.com
    • 端口:465(SSL加密)或者587(TLS加密)
    • 加密方式:对应选SSL或TLS
    • 用户名:你的QQ邮箱地址
    • 密码:刚才拿到的授权码

配置完保存,测试下邮件发送就行。

方案2:配置XAMPP的Sendmail(不用插件,适合喜欢折腾的)

  1. 找到XAMPP安装目录里的sendmail\sendmail.ini,打开后修改这些配置(还是以QQ邮箱为例):
smtp_server=smtp.qq.com
smtp_port=465
smtp_ssl=ssl
auth_username=你的QQ邮箱地址
auth_password=你的QQ邮箱授权码
force_sender=你的QQ邮箱地址
  1. 再打开XAMPP的php\php.ini,找到[mail function]部分,把sendmail_path改成:
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

(注意路径要和你的XAMPP实际安装路径对应,别抄错了)
3. 重启XAMPP的Apache服务,这下wp_mail()就能通过Sendmail发邮件了。

三、最后测试注意点

改完代码和配置后,提交表单测试,如果显示发送成功但收不到邮件,先去垃圾邮件文件夹看看——很多测试邮件会被当成垃圾邮件拦下来。要是还没有,再检查下第三方邮箱的授权码对不对,或者Sendmail的配置路径有没有写错。

内容的提问来源于stack exchange,提问作者shadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:13:34