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

2020/05/15

我们的许多初学者用户都问我们为什么他们的联系表单插件不发送电子邮件,或者为什么他们没有看到任何WordPress通知。在本文中,我们将向您展示如何解决WordPress不发送电子邮件的问题,以便您的网站可以更可靠地发送电子邮件并绕过垃圾邮件文件夹。

为什么您没有从WordPress网站获取电子邮件

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

即使您的托管服务器配置为可以使用它,许多电子邮件服务提供商(例如Gmail和其他服务提供商)也会使用各种工具来减少电子邮件垃圾邮件。这些工具尝试检测电子邮件确实来自其声称所来自的位置。

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

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

这就是为什么我们建议不要使用WordPress发送电子邮件时事通讯的原因

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

什么是SMTP?

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

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

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

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

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

安装WP Mail SMTP插件

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

首先,安装并激活WP Mail SMTP插件。接下来,单击WordPress仪表板中的WP Mail SMTP以配置插件设置。

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

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

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

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

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

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

选择Sendinblue作为WP Mail SMTP中的邮件

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

使用Sendinblue发送WordPress电子邮件

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

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

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

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

创建帐户后,您将看到Sendinblue仪表板。如果您在设置阶段没有完成个人资料,则系统会提示您这样做。

Sendinblue仪表板

接下来,您需要联系支持团队,要求他们验证您的帐户,以便您可以通过Sendinblue发送电子邮件。

我们建议您在此阶段与支持团队联系,因为他们可能需要大约24小时才能验证您的帐户。您可以在等待时继续执行其他步骤。

转到sendinblue.com/contact并写一条消息,其中包括:

  • 请求激活您的帐户
  • 您网站的网址
  • 请注意,您将发送交易电子邮件。如果您还想将Sendinblue用于电子邮件时事通讯,则需要声明您也将发送市场营销电子邮件。

联系表格消息发送至Sendinblue以请求激活帐户

可能会要求您提供更多信息。如果没有,您应该收到Sendinblue的电子邮件,告知您您的帐户已被批准。

将消息发送给联系团队后,您可以继续将域名添加到网站。

请记住,在继续本教程的下一阶段之前,无需等待答复。

为您的网站设置子域

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

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

要添加子域,请登录您的虚拟主机帐户,然后在控制面板的“域”部分中找到。

为了本教程的缘故,我们将在Bluehost的示例托管帐户上演示如何执行此操作。登录后,转到“域»子域”

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

在WordPress中添加子域

如果您使用的是其他托管公司,或者您的DNS由Domain.com或GoDaddy之类的域名注册机构管理,则请遵循其各自的说明。

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

将您的子域添加到Sendinblue

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

在Sendinblue中配置发件人设置

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

在Sendinblue中添加新域

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

添加您的子域并选中复选框

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

这些代码行使Sendinblue可以授权您的域名。

提示:如果您意外关闭此弹出窗口,请不要担心。您可以通过点击子域旁边的“验证此域”按钮来重新获得它:

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

打开一个新的浏览器选项卡,然后重新登录到您的虚拟主机帐户。您需要找到您的域并打开DNS记​​录。

Bluehost中,您可以通过以下方法执行此操作:转到“域»我的域”,然后单击旁边的“管理”。

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

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

Bluehost中的DNS TXT记录

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

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

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

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

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

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

完成后,点击“保存”。

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

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

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

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

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

如果单击该按钮时没有任何反应,则该记录尚无法验证。稍后再检查,看看是否已通过验证。一旦有了它们,您将在绿色的记录旁边看到单词“ Configured”(已配置):

验证后,Sendinblue DNS TXT记录

等待验证发生时,您可以继续阅读本教程。

完成设置WP邮件SMTP以使用Sendinblue

返回到WordPress仪表板中的WP Mail SMTP设置。您应该已经输入了“发件人电子邮件”和“发件人姓名”,如果没有,则可以立即输入。

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

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

选择Sendinblue作为WP Mail SMTP中的邮件

您需要进入您的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帐户使用此过程,但是如果使用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文件中。

将Amazon SES与WP Mail SMTP结合使用以修复WordPress电子邮件

Amazon AWS平台具有简单电子邮件服务(SES),可用于修复WordPress电子邮件问题。

关于Amazon最好的部分是,它可以让您每月免费发送多达62,000封电子邮件。不利的一面是,对于初学者而言,该设置更具挑战性,这就是为什么我们不建议将其作为首选的原因。

但是正如您可以想象的那样,许多专业人士和专家都将Amazon SES用于其WordPress电子邮件SMTP服务,因此我们不能不提及就撰写文章。

无论您决定使用哪种邮件,都务必记住使用“测试电子邮件”标签来确保电子邮件已成功发送。

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

我们希望本文能帮助您学习如何修复WordPress不发送电子邮件的问题。在使用wordpress创建网站,我们常常需要通过WP Mail SMTP插件来发邮件。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注