Wordpress不会向Gmail发送电子邮件

时间:2013-12-03 08:35:31

标签: php wordpress gmail exim

我的Wordpress电子邮件都没有发送到Gmail。更多信息:

  • 我正在使用EXIM邮件服务器
  • 我正在使用wordpress最新版本
  • 仅在将电子邮件发送到Gmail时才会发生

EXIM日志表示该电子邮件已成功发送到Gmail,但不会发送或通过垃圾邮件发送。

2 个答案:

答案 0 :(得分:0)

问题是综合因素:

  • 与postfix不同,EXIM不会自动设置Sender标题
  • Gmail最近做了一些更改,以便更好地处理垃圾邮件,如果电子邮件标头缺少Sender标题,则很可能会默默地丢弃它,或将其作为垃圾邮件发送。
  • Wordpress未设置Sender标题

一旦你知道这些,修复就很简单了。如果您使用的是Wordpress,快速而肮脏的方法是转到wp-includes/pluggable.php,查找wp_mail()函数搜索:

$phpmailer->From     = apply_filters( 'wp_mail_from'     , $from_email );

然后在它之后添加以下内容:

$phpmailer->Sender   = $phpmailer->From;

一旦你这样做,电子邮件就会起作用,你可以通过编写插件以正确的方式解决问题,而不会覆盖核心。 Wordpress使用phpmailer知道这个问题,但wordpress不使用它。此问题上还有bug report

要使用核心mail()功能解决问题,您必须执行以下操作:

// $sender can be the same email address as the From header
mail($to, $subject, $message, $additional_headers, "-f {$sender}")

还有另一个选项可能会有效,具体取决于您服务器的配置(我无法测试它,如果有人可以测试它,我会很高兴):

$sendmailFrom = ini_get('sendmail_path');
ini_set('sendmail_path', $sendmailFrom . ' -f sender@mysite.com'); // or whatever you want

答案 1 :(得分:0)

Gmail(最终可能是Hotmail和Yahoo)starting to disable traditional SMTP authentication mechanisms(PLAIN,LOGIN和CRAMMD5)支持OAUTH2。

如果您单独使用WordPress(PHPMailer)发送邮件,Gmail会将其丢弃或将其标记为垃圾邮件。如果您使用典型的WordPress SMTP插件发送邮件,Gmail会向您发送身份验证错误,或者让您跳过应用专用密码,双因素身份验证以及启用安全性较低的应用作为帐户设置等环节。

为WordPress实现OAuth 2.0的第一个插件(免责声明,我是作者)是Postman SMTP。如果端口TCP 465允许与Gmail的出站连接,邮递员将无错误地发送您的WordPress电子邮件。