在 DigitalOcean 中带有 LEMP 的 Ubuntu 16.04 VPS 中,我有一个 WordPress 网站,其中有一个我使用联系表 7 (CF7) 创建的联系表。
我的问题
我在将电子邮件从我的 WordPress 联系表 (CF7) 传输到我的电子邮件 (Gmail) 时遇到问题。
我必须说,我会谦虚地更喜欢非插件解决方案。
我机器的 DNS 区域
A
记录持有该域。Cname
记录持有www.
域的变体。NS
将 DNS 请求与我的域、我的 IP 和其机器中的相关应用程序相关联的三个记录。
我确实尝试MX
通过自动 DigitalOcean 方式添加记录(通过单击Add Gmail MX records
DigitalOcean DNS 管理工具中的按钮),并MX
添加了 5 条记录,但在我立即尝试从 WordPress 发送测试电子邮件后仍然遇到同样的错误(见下面的错误)。
目前,DNS 区域没有MX
记录,因为如果我在电子邮件上下文中想要的只是将 WordPress 联系表查询发送到我的 Gmail 帐户并且我仍然处于与同样的错误。
确切的错误和调试尝试:
我总是在联系表下方的红色框中收到以下错误消息:
无法发送您的消息。
由于这个错误,没有任何东西被发送到任何地方(甚至没有发送到垃圾邮件文件夹)。
为了调试这个,我运行了以下代码来为 Postfix 创建一个日志:
touch /var/log/mail.log
- Nginx 日志中没有错误。
权限是:
rw-r--r-- 1 root root
但是,在我尝试向自己发送一封测试电子邮件但失败后,此错误日志中没有任何内容。
重现我的问题:
- 创建一个 DigitalOcean Ubuntu 16.04 droplet。
- 创建一个 LEMP 堆栈并在其上运行一个 WordPress 网站。
sudo apt-get update && sudo apt-get upgrade postfix
.- 选择“互联网站点”配置。
- 键入您使用的站点的域。
- 在您的 WordPress 网站上安装 Contact Form 7 并尝试给自己发送一封测试电子邮件。
我的问题
是什么导致了这个问题?
也许我可以尝试使用 Postfix 或我应该使用的替代工具,如sSMTP?我更喜欢最小到无配置的工具。我强调,除了那些登陆 WordPress 联系表的邮件外,我不会向我的 Gmail 发送任何其他电子邮件,我也不会从这台机器在任何地方发送任何其他电子邮件。
过去,我如上所述安装了 Postfix,没有任何问题。如果您知道要检查什么,我应该提供哪些详细信息,请告诉我,我会进行编辑。
更新
1)文件/etc/postfix/main.cf
全部默认。
2)输出ps -efl | grep postfix
:
5 S root 4611 1 0 80 0 - 16352 ep_pol 07:42 ? 00:00:00 /usr/lib/postfix/sbin/master -w
4 S postfix 4613 4611 0 80 0 - 16881 ep_pol 07:42 ? 00:00:00 qmgr -l -t unix -u
4 S postfix 4930 4611 0 80 0 - 16869 ep_pol 11:02 ? 00:00:00 pickup -l -t unix -u -c
0 S root 5201 5187 0 80 0 - 3236 pipe_w 12:19 pts/0 00:00:00 grep --color=auto postfix
问题似乎来自 WordPress,尤其是联系表单的配置,因为问题也发生在
sSMTP
一些人认为比 Postfix 更简单的工具上:当我删除原始表单并创建一个新表单时,我收到一条绿色消息,说明该消息是在测试电子邮件中发送的。
在这里,我什至没有收到 Spam 目录的消息,但至少响应不同,原始问题与 Postfix 无关。
从如何修复 wordpress 联系表不使用 smtp 发送电子邮件:
为什么 WordPress 不发送电子邮件
WordPress 使用 PHP 邮件功能发送由 WordPress 或任何联系插件(如 WPForms)生成的电子邮件。但是,许多 WordPress 托管服务器未配置为使用邮件功能。
此外,为了减少垃圾邮件,您的电子邮件提供商通常会检查您的电子邮件是否来自它声称来自的位置。例如,如果您的电子邮件服务器是 yahoo.com,但您的电子邮件声称是从您网站的域发送的,那么您的表单通知很可能在到达垃圾邮件文件夹之前就被阻止了。
这就是为什么我们建议使用 SMTP 从 WordPress 发送电子邮件,而不是使用默认的 PHP 邮件功能。
SMTP(简单邮件传输协议)是一种发送电子邮件的行业标准方法,该方法使用适当的身份验证方法来确保电子邮件的可传递性。
周日的七种不同方式
本节标题是因为今天是星期日,文章如何修复 wordpress 联系表单不使用 smtp 发送电子邮件列出了设置 SMTP 的七种不同方法:
SMTP 设置
对于我自己,我使用最简单的方法将
cron
错误消息和每日备份报告通过电子邮件发送给我:将 Linux 配置、脚本和文档备份到 Gmail。总结一下步骤:
您还需要指示 gmail 允许对您自己进行不太安全的访问,以便接受电子邮件。它记录在我上面的答案中。
ssmtp
必须更改您的配置文件。这是我的:将以上行更改为您的 gmail 帐户名称、密码和机器名称:
请注意,WinEunuuchs2UnixPassword是您的 gmail 密码,而不是您的 Linux 密码。得到你的
hostname
使用echo $HOSTNAME
。按照 WordPress 文章中的链接。
应该按照上面第一个链接中的 WordPress 文章中的链接来设置 gmail。仅参考我的链接以获取基本概述。