Wordpress SMTP邮件:测试邮件有效,但不是wp_mail

时间:2013-11-12 16:59:13

标签: wordpress phpmailer smtp-auth

我正在使用带有WP Mail SMTP插件的wordpress,以便通过经过身份验证的SMTP发送电子邮件。我现在已经在SMTP服务器上打开它,以便我们可以在那里转发并且测试邮件正常工作 - 报告为真并且邮件到达。但是,如果我尝试从我的插件使用wp_mail发送它不起作用 - wp_mail返回false并且电子邮件没有到达。我在wp_mail函数中添加了一些调试代码,包括我在wp_mail最后的try / catch中的catch块中调试$e->getMessage()(当它尝试发送实际邮件时)。这说

  

SMTP错误:无法进行身份验证。

然而,如上所述,测试邮件有效!

然后我开始调试phpmailer对象并比较我的wp_mail调用和测试邮件的调用。我注意到exceptions受保护的成员对我来说是真的而不是测试邮件。在我的调用中进入wp_mail时似乎不存在全局phpmailer,因此它是使用$phpmailer = new PHPMailer( true )在wp_mail中创建的。如果我将true更改为false(即在phpmailer对象中将异常设置为false)则不仅wp_mail返回true而且邮件到了!

如果我检查异常但如果我不检查异常,邮件仍然到达,我怎么能收到身份验证错误?有什么想法吗?

我在我的开发环境中运行wordpress 3.7.1和WP Mail SMTP 0.9.3。我在wordpress 3.6.1中使用插件版本0.9.1遇到了相同的症状(测试邮件但不是我的wp_mail调用)

1 个答案:

答案 0 :(得分:1)

即使身份验证失败,测试电子邮件功能似乎仍继续尝试发送电子邮件。即使没有进行身份验证,邮件服务器似乎也允许我进行中继,以便测试电子邮件通过。如果身份验证失败,则从我的插件实际调用wp_mail会失败。如果我转向SMTP身份验证,那么我的邮件也会正常工作。

我认为这是测试电子邮件功能中的一个错误,但我会接受插件作者。