
WordPress 邮件发送失败,或者邮件进入收件人的垃圾箱,是网站所有者最常遇到的问题之一。无论是用户注册确认邮件、密码重置链接,还是 WooCommerce 订单通知,都依赖可靠的邮件发送系统。本教程将详细介绍如何在共享主机上配置 WordPress 通过 SMTP 发送邮件,确保邮件准确送达收件箱。
本文涵盖:WordPress 邮件发送失败的原因、PHP mail() 与 SMTP 的区别、WP Mail SMTP 插件的安装与配置、AsiaGB DirectAdmin 邮件托管的 SMTP 设置、Gmail SMTP 应用专用密码、SPF 和 DKIM 配置,以及常见问题排查。
1. 为什么 WordPress 在主机上无法发送邮件
WordPress 通过内置的 wp_mail() 函数发送所有邮件,该函数默认调用服务器上的 PHP mail() 函数。然而在共享主机环境中,PHP mail() 存在多种限制,导致邮件无法成功发送或被标记为垃圾邮件。
WordPress 邮件失败的主要原因
- 共享 IP 地址信誉问题:共享主机上,数百个网站共用同一个 IP 地址。如果其中任何一个网站发送垃圾邮件,整个 IP 段都会被列入黑名单,您的邮件也会受到牵连,即使您自己没有任何违规行为。
- 缺乏身份验证:PHP mail() 发送邮件时没有任何登录或身份验证步骤,接收方邮件服务器无法确认发件人的合法性,因此往往拒绝接收或将其归入垃圾邮件。
- 缺少反向 DNS(PTR 记录):许多主机服务商没有正确配置 PTR 记录,接收方服务器会将这类 IP 视为可疑来源。
- 没有 SPF 或 DKIM 记录:如果您的域名缺少这两项 DNS 记录,Gmail、Outlook 等主流邮件服务商会自动将您的邮件放入垃圾箱,甚至直接拒绝接收。
- 端口 25 被封锁:大多数互联网服务提供商和主机服务商会封锁出站的 25 端口以防止垃圾邮件,而 PHP mail() 依赖 25 端口通过 sendmail 发送,因此在许多服务器上会静默失败。
- sendmail 或 Postfix 配置错误:部分服务器未安装 sendmail,或配置存在问题,导致 PHP mail() 始终返回 false 而没有任何明显的错误提示。
最有效的解决方案是改用 SMTP(简单邮件传输协议)。SMTP 需要用用户名和密码进行身份验证,支持加密传输,并通过信誉良好的邮件服务器发送,可以大幅提升邮件到达率。
2. PHP mail() 与 SMTP 的区别详解
在动手配置之前,先了解这两种方式的本质区别,有助于理解为什么必须切换到 SMTP。
PHP mail() — 传统方式的局限性
- 直接从服务器发送邮件,没有任何身份验证环节
- 依赖服务器本地安装的 sendmail 或 Postfix
- 不支持加密,邮件内容以明文形式在网络中传输
- 日志记录极少,出现问题时难以排查原因
- 在共享主机上进入垃圾箱的概率极高
- 发送失败时没有自动重试机制
SMTP — 可靠的行业标准
- 发送前必须使用用户名和密码登录,向接收方证明身份
- 支持 SSL/TLS 和 STARTTLS 加密,保证传输安全
- 通过信誉良好的邮件服务器发送,如 Gmail、Outlook 或 AsiaGB 的 DirectAdmin 邮件托管
- 提供详细的发送日志,可以追踪每封邮件的状态
- 收件箱到达率远高于 PHP mail()
- 完全兼容 SPF 和 DKIM 身份验证
- 发送失败时提供有意义的错误信息
核心结论:SMTP 是发送事务性邮件的行业标准。如果您的网站依赖邮件与用户沟通——注册确认、订单通知、密码重置——请立即从 PHP mail() 切换到 SMTP,没有理由继续使用旧方法。
3. 安装和配置 WP Mail SMTP 插件
WP Mail SMTP by WPForms 是解决 WordPress 邮件问题最受欢迎的插件,全球超过 400 万个网站正在使用。其免费版本已能满足大多数网站的基本需求。
安装步骤
- 登录 WordPress 后台 → 插件 → 安装插件
- 在搜索框中输入 "WP Mail SMTP"
- 找到 "WP Mail SMTP by WPForms",点击"现在安装"
- 安装完成后,点击"启用"
- 系统会弹出设置向导,可以点击"跳过此步骤"手动配置
- 在左侧菜单中进入 WP Mail SMTP → 设置
基础配置:发件人邮箱和发件人名称
在常规设置部分,首先配置以下关键字段:
- 发件人邮箱(From Email):填写您希望收件人看到的发件地址,例如
[email protected]或[email protected]。必须使用您自己域名的邮箱地址,这对 SPF 和 DKIM 的正常工作至关重要。 - 发件人名称(From Name):填写您的企业名称或网站名称,将显示在收件人看到的"发件人"字段中。
- 强制发件人邮箱:建议开启,防止其他插件覆盖发件地址,确保所有 WordPress 邮件使用统一的发件人。
- 强制发件人名称:同样建议开启,理由相同。
选择邮件发送方式(Mailer)
WP Mail SMTP 支持多种邮件发送方式,根据您的具体情况选择:
- 其他 SMTP(Other SMTP)——适合 AsiaGB 的 DirectAdmin 邮件托管或任何标准 SMTP 服务器,推荐企业网站使用
- Gmail / Google Workspace——适合 Gmail 账号或 Google Workspace 企业邮箱
- Outlook / Office 365——适合 Microsoft 邮箱账号
- SendGrid、Mailgun、Amazon SES——适合大批量邮件发送,有额外费用
- PHP mail()——即将替换的默认方式,不推荐
4. 在 AsiaGB 的 DirectAdmin 邮件主机上设置 SMTP
如果您的网站托管在 AsiaGB,您已经拥有自己域名的邮箱账号,可以直接将其用作 WordPress 的 SMTP 服务器,无需额外付费。这是企业网站的最佳选择——邮件从您自己的域名发出,看起来专业,也让收件人更信任。
第一步:在 DirectAdmin 中创建邮箱账号
- 登录 DirectAdmin 控制面板(地址:
yourdomain.com:2222) - 在"邮件管理"(E-Mail Manager)中点击"创建邮件账号"
- 输入用户名,例如
noreply或wordpress - 设置一个强密码(包含大小写字母、数字和特殊符号)
- 邮箱配额设置 50MB 即可,因为发出的邮件不会存储在此邮箱中
- 点击"创建"完成
第二步:获取 SMTP 服务器参数
AsiaGB DirectAdmin 的 SMTP 参数通常如下:
- SMTP 主机:
mail.yourdomain.com(或欢迎邮件中注明的服务器主机名) - SMTP 端口:
587(STARTTLS 加密,推荐)或465(SSL/TLS) - 加密方式:端口 587 对应 TLS,端口 465 对应 SSL
- 身份验证:开启
- SMTP 用户名:完整邮件地址,例如
[email protected] - SMTP 密码:您在 DirectAdmin 中设置的密码
第三步:在 WP Mail SMTP 中填写参数
- 进入 WP Mail SMTP → 设置
- 在邮件发送方式(Mailer)部分选择"其他 SMTP"
- 按上述参数填写各字段
- 开启"自动 TLS"
- 开启"身份验证"
- 填写 SMTP 用户名和密码
- 点击"保存设置"
SMTP 主机: mail.yourdomain.com SMTP 端口: 587 加密方式: TLS 自动 TLS: 开启 身份验证: 开启 SMTP 用户名: [email protected] SMTP 密码: [DirectAdmin 中设置的密码]
提示:如果 mail.yourdomain.com 无法连接,可以尝试直接使用 yourdomain.com 作为 SMTP 主机。正确的邮件服务器主机名也可以在 AsiaGB 发送的开户欢迎邮件中找到。
5. 使用 Gmail SMTP 连接 WordPress(应用专用密码)
您也可以使用 Gmail 或 Google Workspace 账号作为 WordPress 的 SMTP 服务器。但自 2022 年起,Google 不再允许第三方应用使用普通账号密码登录,必须使用应用专用密码(App Password)——一个专门为特定应用生成的 16 位授权码。
使用前提
- 您的 Google 账号必须已开启两步验证(2-Step Verification),否则看不到应用专用密码选项
- 如果使用 Google Workspace 账号,管理员可能需要先开启相关权限
创建 Gmail 应用专用密码的步骤
- 访问
myaccount.google.com并登录 - 点击左侧菜单中的"安全性"
- 找到"两步验证"并点击进入
- 滚动到页面底部,找到"应用专用密码"
- 在"选择应用"下拉框中选择"邮件"
- 在"选择设备"下拉框中选择"其他(自定义名称)"
- 输入名称"WordPress SMTP",点击"生成"
- Google 会显示一个 16 位密码——立即复制保存(只显示一次)
在 WP Mail SMTP 中配置 Gmail SMTP
SMTP 主机: smtp.gmail.com SMTP 端口: 587 加密方式: TLS 身份验证: 开启 SMTP 用户名: [email protected] SMTP 密码: 应用专用密码(去掉空格后的 16 位)
保存设置后立即发送测试邮件验证。免费 Gmail 账号每天约可发送 500 封邮件;Google Workspace 账号每天最多可发送 2000 封。如需更高发送量,请考虑专用邮件投递服务。
使用 Gmail SMTP 的注意事项
- 显示给收件人的发件人名称来自您的 Google 账户资料,不是您的企业名称(Google Workspace 的自定义别名除外)
- 发件地址会显示为 Gmail 邮箱,而不是您的网站域名,对企业形象有一定影响
- 如果 Google 检测到异常活动,可能会撤销应用专用密码
- 更改 Google 账号密码后,所有应用专用密码将失效,需要重新生成
建议:对于企业网站,推荐使用 AsiaGB DirectAdmin 邮件托管(第 4 节)而不是 Gmail SMTP,因为邮件会从您自己的域名发出,更专业,也不受 Google 每日发送限额的约束。
6. 测试 WordPress 邮件发送
配置完成后的测试至关重要,不要跳过这个环节。建议测试多种场景,确保网站的所有邮件功能都能正常运作。
使用 WP Mail SMTP 内置工具测试
- 进入 WP Mail SMTP → 工具 → 邮件测试
- 输入收件人邮件地址,建议同时测试 Gmail 和 Outlook 以观察结果差异
- 点击"发送测试邮件"
- 检查收件人的收件箱和垃圾邮件文件夹
- 查看 WP Mail SMTP → 邮件日志,确认发送状态(需先开启日志功能)
测试 WordPress 实际功能
SMTP 测试通过后,务必验证网站实际功能的邮件发送:
- 在网站上注册新账号,确认是否收到欢迎邮件
- 使用"忘记密码"功能,确认是否收到密码重置邮件
- 如果使用 WooCommerce,下一个测试订单,确认是否收到订单确认邮件
- 提交联系表单(Contact Form 7 或 WPForms),确认管理员是否收到通知
- 如有会员系统,测试订阅确认邮件是否正常发送
通过邮件标头验证身份认证状态
在 Gmail 中打开收到的测试邮件,点击三点菜单 → "显示原始邮件",查找 Authentication-Results 行。正确配置 SMTP 后应该看到以下结果:
spf=pass (SPF 验证通过——邮件来自授权 IP) dkim=pass (DKIM 签名有效——邮件未被篡改) dmarc=pass (DMARC 策略满足)
如果任何一项显示 "fail" 或 "none",请按照下一节的步骤配置 SPF 和 DKIM。
7. 配置 SPF 和 DKIM 防止邮件进入垃圾箱
即使 SMTP 配置正确,如果您的域名缺少 SPF 和 DKIM 记录,邮件仍然可能进入垃圾箱。自 2024 年初起,Google 和 Yahoo 要求批量发件人必须配置 SPF、DKIM 和 DMARC,即使是小规模发件人,这些记录也能显著提升收件箱到达率。
配置 SPF 记录(发件人策略框架)
SPF 是一条 DNS TXT 记录,列出被授权代表您域名发送邮件的 IP 地址或邮件服务器。接收方邮件服务器会在接受邮件前检查 SPF 记录。
在 DirectAdmin 中添加 SPF 记录的步骤:
- 登录 DirectAdmin → DNS 管理 → 添加记录
- 类型:TXT
- 名称:@(代表根域名)
- 值:根据您的发送方式填写
仅通过 DirectAdmin 邮件发送的 SPF 记录:
v=spf1 include:_spf.yourdomain.com ~all
同时通过 DirectAdmin 和 Gmail 发送的 SPF 记录:
v=spf1 include:_spf.yourdomain.com include:_spf.google.com ~all
SPF 结尾标识符说明:
~all(软失败)——来自未授权 IP 的邮件会被标记为可疑但仍可送达,适合测试阶段-all(硬失败)——来自未授权 IP 的邮件直接被拒绝,确认配置无误后使用
配置 DKIM 记录(域密钥识别邮件)
DKIM 为每封发出的邮件添加加密数字签名。接收方服务器通过 DNS 获取您的公钥,验证签名以确认邮件在传输过程中未被篡改。
在 AsiaGB 的 DirectAdmin 中启用 DKIM:
- 登录 DirectAdmin → 邮件管理 → 域密钥(DKIM)
- 如果已有密钥,复制显示的 TXT 记录
- 如果没有,点击"生成新密钥"
- 将生成的 TXT 记录添加到 DNS,记录名称为
default._domainkey.yourdomain.com - 等待最多 24 小时让 DNS 生效后再进行测试
添加 DMARC 记录
DMARC 告诉接收方服务器如何处理 SPF 或 DKIM 验证失败的邮件,并向您发送报告。
从监控模式开始(p=none,不拒绝任何邮件):
名称: _dmarc.yourdomain.com 类型: TXT 值: v=DMARC1; p=none; rua=mailto:[email protected]
确认 SPF 和 DKIM 正常工作后,逐步收紧策略:
v=DMARC1; p=quarantine; rua=mailto:[email protected] # 或最严格的: v=DMARC1; p=reject; rua=mailto:[email protected]
使用在线工具验证配置
使用 MXToolbox SuperTool(mxtoolbox.com/SuperTool)免费检查 SPF、DKIM 和 DMARC 记录。Mail Tester(mail-tester.com)可以给您的邮件评分(满分 10 分),并告诉您还需要改进哪些方面。
8. 常见 WordPress 邮件问题排查
即使 SMTP 配置正确,仍可能遇到各种问题。以下是最常见的问题和有效的解决方法。
错误:"SMTP Error: Could not connect to SMTP host"
- 主机名错误——从欢迎邮件或 DirectAdmin 界面确认正确的 SMTP 主机名
- 端口被封锁——尝试将端口从 587 改为 465(或反之)
- 加密方式不匹配——端口 587 使用 TLS(STARTTLS),端口 465 使用 SSL
- 主机防火墙封锁出站连接——通过工单联系 AsiaGB 支持团队
错误:"SMTP Error: Password command failed"
- 密码不正确——在 DirectAdmin 中重置邮箱密码并更新 WP Mail SMTP 配置
- 用户名格式错误——必须是完整邮件地址,包含 @domain 部分
- 邮箱账号被锁定或暂停——在 DirectAdmin 中检查账号状态
邮件能发送但进入垃圾箱
- SPF 记录缺失或不正确——按第 7 节步骤添加或修正 SPF
- 未配置 DKIM——在 DirectAdmin 中启用 DKIM 并添加 DNS 记录
- 发件人邮箱域名与发送域名不一致——务必使用 @yourdomain.com 的邮箱作为发件人
- 邮件主题含有垃圾邮件触发词——避免在主题中使用"免费"、"紧急"、"点击这里"等词语
- SMTP 服务器 IP 在黑名单中——在
mxtoolbox.com/blacklists检查
WooCommerce 订单邮件不发送
- 进入 WooCommerce → 设置 → 邮件,检查每种邮件类型是否已启用
- 检查每种邮件类型的"收件人"字段,确认管理员邮箱地址正确
- 点击每种邮件类型中的"发送测试邮件"逐一测试
- 在 WP Mail SMTP 邮件日志中查找具体错误信息
联系表单通知邮件未到达管理员
WP Mail SMTP 会接管所有插件使用的 wp_mail() 函数,包括 Contact Form 7 和 WPForms。如果 SMTP 配置正确,这些表单应该自动正常工作。排查步骤:
- 检查表单设置中的收件人邮箱地址是否正确
- 确认 Akismet 或 CF7 的 Flamingo 插件没有将提交标记为垃圾
- 在 WP Mail SMTP 邮件日志中确认表单是否触发了 wp_mail()
开启调试模式获取详细错误信息
在 wp-config.php 中添加以下代码,获取详细的错误日志:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
日志文件位于 wp-content/debug.log。WP Mail SMTP Pro 版本还提供内置邮件日志,包含完整的错误上下文,更便于排查问题。
9. 常见问题解答
问:WP Mail SMTP 免费版足够用吗,需要升级吗?
答:对于大多数网站来说,免费版完全够用。它支持通用 SMTP、Gmail 和 Outlook,并包含测试邮件功能。付费版(Pro)增加了详细的邮件日志、发送失败通知、智能路由和优先支持——适合电商、会员网站等对邮件可靠性有极高要求的场景。
问:使用 AsiaGB DirectAdmin SMTP 每天可以发送多少封邮件?
答:共享主机环境有每小时邮件发送数量限制,以防止垃圾邮件滥用。对于正常的事务性邮件(注册、订单、联系表单),通常不会达到限制。如果需要发送大量新闻邮件或群发通知,建议搭配专用邮件投递服务,如 Brevo、Mailchimp 或 SendGrid。
问:配置 SMTP 前网站需要先安装 SSL 证书吗?
答:不需要。网站的 HTTPS 证书和 SMTP 传输加密是两个独立的概念,互不依赖。您可以在没有 HTTPS 的网站上配置 SMTP。不过,出于整体安全考虑,强烈建议为网站安装 SSL 证书。
问:除了 WP Mail SMTP,还有哪些值得推荐的替代插件?
答:FluentSMTP 是一个完全免费、无付费升级的优秀替代方案。Post SMTP Mailer/Email Log 提供出色的邮件投递日志功能。Easy WP SMTP 则更轻量简洁。WP Mail SMTP 仍是最受欢迎的选择,因为它有活跃的开发团队和庞大的用户社区支持。
问:企业网站应该选择 DirectAdmin SMTP 还是 Gmail SMTP?
答:对于企业网站,强烈推荐使用 AsiaGB 的 DirectAdmin 邮件托管。邮件从您自己的域名发出(例如 [email protected]),更专业,更能建立品牌信任,也不受 Google 每日发送限额的约束。Gmail SMTP 适合个人项目或对发件人地址格式要求不高的网站。
如需中文/英文支持,请使用工单系统(billing.in.th)或发送邮件至 [email protected],我们将以英文回复。电话服务仅提供泰语支持(24小时 · 仅限泰语)。
立即开始使用可靠的 WordPress 主机
AsiaGB 提供含 DirectAdmin 控制面板、SSD 存储、99% 正常运行时间和自有域名邮件托管的共享主机,起价仅需 500 泰铢/年。
立即开始使用