从 Wordpress 可靠地发送 SMTP 电子邮件

Sending SMTP emails reliably from Wordpress

我在 Cloudways 托管了一个 Wordpress 网站。我已经安装了他们的 Elastic Email SMTP 插件。理论上我只需要激活插件,然后服务器将负责 STMP 中继和身份验证。这意味着我不需要 Wordpress 的 SMTP 插件。

我添加了 v=spf1 a mx include:_spf.elasticemail.com ~all 的 SPF 值 根据 Elastic 电子邮件自己的指南,我的 DNS 设置的 DKIM 值为 k=rsa;t=s;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCbmGbQMzYeMvxwtNQoXN0waGYaciuKx8mtMh5czguT4EZlJXuCt6V+l56mmt3t68FEX5JJ0q4ijG71BGoFRkl87uJi7LrQt1ZZmZCvrEII0YO4mp8sDLXC8g1aUAoi8TJgxq2MJqCaMyj5kAm3Fdy2tzftPCV/lbdiJqmBnWKjtwIDAQAB

如果通过我服务器上的一个小 PHP 脚本发送一些测试电子邮件:

$to = "web-XXXXXX@mail-tester.com";
$subject = "Testing";
$txt = "Hello world!";

mail($to,$subject,$txt,'From: noreply@mydomain.se ','-f noreply@mydomain.se ');

我在 www.mail-tester.com 中获得了优异的成绩,并且电子邮件也毫无问题地到达了我的两个不同的收件箱。

但是当我尝试通过插件 "check email" 从 wordpress 发送电子邮件时,我在 www.mail-tester.com 得到了糟糕的分数...它说我没有完全验证我特别得到这一行的 -3 减分:We didn't find a mail server (MX Record) behind your domain name xxxxxx.cloudwaysapps.com.

与简单的 php 测试脚本相比,通过 Wordpress 发送测试电子邮件时,我的分数怎么会这么差?我应该怎么做才能从 Wordpress 发送的邮件获得可靠的分数?

问题 是 Wordpress 的默认行为是将 Return-Path 设置为服务器地址,在我的例子中:xxxxxx.cloudwaysapps.com 而不是 xxxx@mydomain.com.解决方案以及使电子邮件更有可能到达收件箱的方法是使用此 tiny plugin 修改 Wordpress 的默认行为。它将外发电子邮件的 Return-Path header 设置为等于发件人电子邮件地址。

对于 WordPress,实际问题是您在第二条评论中指出的问题。

如果您在 WordPress 站点上使用“WP Mail SMTP”插件,还有另一种解决方法。它会使用您的自定义设置覆盖默认的 WordPress 电子邮件行为。

Cloudways 编写了完整的设置指南 SMTP on WordPress。在他们的示例中,他们使用了 Gmail SMTP,但 Elastic Email 的步骤相同。

您也可以在 functions.php 主题文件中快速编写代码。例如:

function my_phpmailer_example( $phpmailer ) {
    $phpmailer->ReturnPath='bounce_here@domain.com';
    $phpmailer->Sender='noreply@mydomain.com';
    $phpmailer->SetFrom('noreply@mydomain.com', 'My Name', FALSE);
}
add_action( 'phpmailer_init', 'my_phpmailer_example' );

根据我的经验,主动显式设置所有这三个条目确实有助于解决 dkim 和 spf 验证问题。