如何修复 WordPress 不发送电子邮件问题

WPBeginner 上最常见的问题之一是如何修复 WordPress 不发送电子邮件的问题。

我们的许多初级用户问我们为什么他们的联系表单插件没有发送电子邮件,或者为什么他们没有看到任何 WordPress 通知。

在本文中,我们将向您展示如何解决 WordPress 不发送电子邮件的问题,以便您的网站可以更可靠地发送电子邮件并绕过垃圾邮件文件夹。

如何解决 WordPress 不发送电子邮件的问题

为什么您没有从您的 WordPress 网站收到电子邮件

电子邮件丢失的最常见原因是您的WordPress 托管服务器未正确配置为使用PHP mail() 函数。

即使您的主机配置为使用它,许多电子邮件服务提供商(如 Gmail 和其他)也会使用各种工具来减少垃圾邮件。这些工具试图检测一封电子邮件是否真的来自它声称来自的位置。

WordPress 网站发送的电子邮件通常无法通过此测试。

这意味着当从您的 WordPress 站点(联系表单插件、管理员通知等)发送电子邮件时,它甚至可能不会进入收件人的垃圾邮件文件夹,更不用说收件箱了。

这就是为什么我们建议不要使用 WordPress 来发送您的电子邮件通讯。

这也是我们推荐大家在 WordPress 中使用 SMTP 发送电子邮件的原因。

什么是 SMTP?

SMTP(简单邮件传输协议)是发送电子邮件的行业标准。

与 PHP 的 mail() 函数不同,SMTP 使用适当的身份验证,从而提高了电子邮件的可传递性。

WordPress 有一个WP Mail SMTP插件,可将您的 WordPress 站点配置为使用 SMTP 而不是 PHP mail() 函数发送电子邮件。

您可以使用它连接任何流行的 SMTP 服务,例如 SendinBlue、Gmail (G Suite)、Office365、Amazon SES 等。

话虽如此,让我们来看看如何解决 WordPress 不发送电子邮件的问题。

视频教程

订阅 WPBeginner

如果您更喜欢书面说明,请继续阅读。

安装 WP Mail SMTP 插件

无论您选择什么 SMTP 服务,您都需要在您的站点上安装 WP Mail SMTP 插件。这使您可以将 WordPress 从使用内置的 PHP mail() 函数切换到使用您的 SMTP 服务。

首先,安装并激活WP Mail SMTP插件。如果您不确定如何安装,请参阅我们关于如何安装 WordPress 插件的分步指南。

接下来,单击 WordPress 仪表板中的 WP Mail SMTP 以配置插件设置。

WordPress 仪表板中的 WP Mail SMTP 设置页面

您需要首先输入您希望站点电子邮件来自的名称和企业电子邮件地址。确保您在此处使用的电子邮件地址与您将用于 SMTP 邮件服务的电子邮件地址相同。

输入您希望 WordPress 电子邮件来自的名称和电子邮件地址

您可以选择强制电子邮件使用此名称和电子邮件地址,即使其他插件(如WPForms)具有不同的设置。WP Mail SMTP 将覆盖其他插件的设置。

之后,您需要为您的站点选择一个 SMTP 邮件服务。

在本教程中,我们将使用Sendinblue设置 SMTP 。如果您更喜欢使用 Gmail 或 Office365,那么我们也会在本文后面提供有关这些内容的说明。

在 WP Mail SMTP 中选择 Sendinblue 作为您的邮件程序

要完成设置 WP Mail SMTP,您需要使用 Sendinblue 创建一个帐户。我们将继续进行下一步,然后返回完成 WP Mail SMTP 上的设置。

使用 Sendinblue 发送 WordPress 电子邮件

Sendinblue是一个受欢迎的电子邮件服务提供商。它们使您可以发送大量具有高可传递性的电子邮件。

您可以使用 Sendinblue 每天免费发送多达 300 封电子邮件,这对于大多数小型网站来说绰绰有余。

这些可能是来自您的联系表格的电子邮件、新用户帐户详细信息、密码恢复电子邮件或通过您的 WordPress 网站发送的任何其他电子邮件。

首先,您需要访问Sendinblue 网站创建一个帐户。点击“免费注册”按钮设置您的帐户。

创建帐户后,您将看到 Sendinblue 仪表板。如果您在设置阶段未完成个人资料,系统会在此处提示您完成。

Sendinblue 仪表板

在您可以继续使用 Sendinblue 进行设置之前,您的网站上还有一个步骤。

为您的网站设置子域

首先,您需要设置一个子域。这就像您网站的一个单独部分。我们建议使用mail1.yourdomain.com。

注意:您的WordPress 主机可能不允许您将邮件用作子域,这也是我们将 1 放在那里的原因。

要添加您的子域,请登录您的虚拟主机帐户并找到您控制面板的域部分。

为了本教程的目的,我们将演示如何在Bluehost上的示例托管帐户上执行此操作。登录后,转到Domains » Subdomains。

然后,您可以输入您的子域并单击“创建”。

在 WordPress 中添加子域

如果您使用其他托管公司,或者您的 DNS 由Domain.com、Network Solutions或GoDaddy等域注册商管理,请按照各自的说明进行操作。

创建子域后,您需要将其添加到您的 Sendinblue 帐户中。

将您的子域添加到 Sendinblue

在您的 Sendinblue 帐户中,转到“设置”,然后找到“您的发件人”并单击“配置”按钮:

在 Sendinblue 中配置您的发件人设置

接下来,单击“域”选项卡,然后单击“添加新域”按钮。

在 Sendinblue 中添加新域

输入整个子域(例如 mail1.yoursite.com)并选中“我想使用此域名对我的电子邮件进行数字签名(SPF、DKIM、DMARC)”旁边的框。

添加您的子域并选中该框

接下来,单击“保存”,您将看到一个弹出窗口,其中列出了几条 DNS 记录。

这些代码行让 Sendinblue 授权您的域名。

提示:如果您不小心关闭了此弹出窗口,请不要担心。您可以通过单击子域旁边的“验证此域”按钮返回它:

验证域按钮,可让您返回 DNS 设置

打开一个新的浏览器选项卡并重新登录到您的网络托管帐户。您需要找到您的域并打开 DNS 记录。

在Bluehost中,您可以通过转到Domains » My Domains然后单击您的域旁边的“管理”来执行此操作。

您需要在此处添加 Sendinblue 提供的 3 条 TXT 记录。

首先,向下滚动以找到 DNS 记录的 TXT 部分。它看起来像这样:

Bluehost 中的 DNS TXT 记录

然后,单击“添加记录”。

完成第一条记录如下:主机记录: mail._domainkey.mail1记录类型: TXT TXT 值:从 Sendinblue 复制。TTL: 1天

提示:主机记录可能被您的网络主机称为主机或名称。如果您对子域使用了不同的东西,请更改mail1 。记录类型可能不是必需的。TXT 值也可以称为 TXT 数据:它是 Sendinblue 详细信息中的第一段长代码。TTL 可以是 24 小时或 86400 秒(两者都相当于 1 天)。如果您使用的是 GoDaddy,请将其设置为 1 小时。

添加第一条记录后,单击“保存”。

接下来,您需要添加第二条记录。完成如下:

主机记录: mail1记录类型: TXT TXT 值: v=spf1 include:spf.sendinblue.com mx ~allTTL: 1 天

完成后,单击“保存”。

保存后,您需要添加第三条记录。完成如下:

主机记录: mail1记录类型: TXT TXT 值:从 Sendinblue 复制。这是第三段代码。TTL: 1天

完成后,继续保存该记录。

警告: Sendinblue 还有第四段代码用于 DMARC 记录。您不需要这个,我们强烈建议您跳过它,除非您有 DMARC 配置经验。

添加记录后,返回 Sendinblue。对于每条记录,单击“添加记录”按钮。请验证它。Sendinblue 可能需要 24-48 小时才能验证您的记录,但通常要快得多。

如果单击该按钮时没有任何反应,则无法验证记录。稍后再检查,看看它们是否已经过验证。完成后,您会在记录旁边以绿色看到“已配置”字样:

Sendinblue DNS TXT 记录一旦被验证

在等待验证发生时,您可以继续学习本教程。

完成设置 WP Mail SMTP 以使用 Sendinblue

返回 WordPress 仪表板中的 WP Mail SMTP 设置。您应该已经输入了发件人电子邮件和发件人姓名,但如果没有,您现在可以这样做。

不选中“返回路径”复选框,因为 Sendinblue 不使用此选项。

接下来,为您的邮件点击“Sendinblue”。

在 WP Mail SMTP 中选择 Sendinblue 作为您的邮件程序

您需要转到您的 Sendinblue 帐户才能找到您的 API 密钥。只需单击“API 密钥”框下方的链接,您的 Sendinblue 帐户仪表板就会在正确的位置打开一个新选项卡。

从此页面复制v3 API 密钥。

从 Sendinblue 获取 API

恭喜。你现在已经设置好了一切。最后一步是发送测试电子邮件以确保一切正常。

转到 WP Mail SMTP 的“电子邮件测试”选项卡,然后输入要发送电子邮件的电子邮件地址。这将默认为站点的管理员电子邮件。点击“发送电子邮件”。

您应该会看到消息“测试 HTML 电子邮件已成功发送!” 检查您的收件箱,看看它是否已经到达。它看起来像这样:

来自 WP Mail SMTP 的测试邮件

注意:如果您的 Sendinblue 帐户尚未激活,您将收到以下消息:[permission_denied]: Unable to send email. Your SMTP account is not yet activated。

修复 WordPress 电子邮件问题的替代方法

从WP Mail SMTP插件的邮件选项列表中可以看出,您不必使用 Sendinblue。虽然这是我们的首选免费推荐,但您还可以使用其他选项,包括 Office 365、Gmail / G Suite、Amazon SES 等。

将 Gmail 或 G Suite 与 WP Mail SMTP 一起使用来修复 WordPress 电子邮件

如果您有 Gmail 或 G Suite 帐户,则可以使用它来发送电子邮件。当您使用 WP Mail SMTP 插件时,您无需在 WordPress 中输入您的电子邮件登录详细信息。

要使用 Gmail 或 G Suite,请如上所示设置 WP Mail SMTP,然后单击邮件程序的“Google”选项。

您将需要选中“返回路径”框。

之后,您将被要求输入“客户 ID”和“客户密码”。要获取这些详细信息,您需要在您的 Google 帐户中创建一个网络应用程序。如果这听起来有点令人生畏,请不要担心。您可以在本文中找到有关使用 Gmail 发送 WordPress 电子邮件的完整说明。

注意:您可以通过普通 Gmail 帐户使用此过程,但如果您使用G Suite,您的电子邮件送达率会更好。请参阅我们的指南,了解如何使用 Gmail 和 G Suite 设置专业电子邮件地址。

但是,使用 Gmail 或 G Suite 有几个主要缺点。

一是您可能需要联系您的网络主机,让他们安装正确的证书以使其正常工作。

另一个是,如果您将来更改电子邮件地址,则需要重新完成整个过程。这将包括创建一个新的 Web 应用程序。

使用 Office 365 / Outlook 和 WP Mail SMTP 来修复 WordPress 电子邮件

如果您使用Microsoft Office 365或 Outlook 作为您的常规电子邮件帐户,那么您也可以使用它通过 WordPress 发送电子邮件。但是,这不是推荐的选项,因为它的安全性较低。

您需要如上所述设置 WP Mail SMTP,然后单击“其他 SMTP”选项。这将打开一个表格来完成。使用以下设置填写:

SMTP 主机:smtp.office365.com加密:TLS SMTP 端口:587自动 TLS:(保持打开状态)身份验证:(保持打开状态)SMTP 用户名:您的 Office 365 帐户电子邮件地址SMTP 密码:您的 Office 365 帐户密码

这种方法的一个关键问题是它需要在 WordPress 中以纯文本形式存储您的密码。这不安全,并且您帐户上的任何其他管理员都可以看到您的密码。您可以使用 WP Mail SMTP 应用程序中的说明将其记录在您的wp-config.php文件中。

有关更多详细信息,请参阅有关如何使用 WP Mail SMTP 设置 Outlook的详细指南。

将 Amazon SES 与 WP Mail SMTP 一起使用来修复 WordPress 电子邮件

Amazon AWS 平台有一个简单电子邮件服务 (SES),您可以使用它来修复 WordPress 电子邮件问题。

亚马逊最好的部分是它可以让您每月免费发送多达 62,000 封电子邮件。缺点是设置对于初学者来说更具挑战性,这就是为什么我们不推荐它作为我们的首选选项。

但是您可以想象,很多专业人士和专家都将 Amazon SES 用于他们的 WordPress 电子邮件 SMTP 服务,因此我们无法不提及它就写一篇文章。

如果您对使用 WordPress 设置 Amazon SES 感兴趣,请参阅有关如何使用 WordPress 设置 Amazon SES的完整说明。

无论您决定使用哪种邮件,请始终记住使用“测试电子邮件”选项卡以确保成功发送电子邮件。

您还必须确保检查您的收件箱,并确认您已收到测试电子邮件。

我们希望本文能帮助您了解如何修复 WordPress 不发送电子邮件的问题。您可能还想查看我们最常见的 WordPress 错误列表以及如何修复它们。