WP Mail SMTP版本1.4.2停止发送电子邮件

时间:2019-04-22 15:19:54

标签: php wordpress smtp phpmailer

我有一个使用wp_mail()功能的插件,用于发送有关表单错误的电子邮件。我也安装了WP Mail SMTP插件,以使用我的自定义SMTP设置。

使用WP Mail SMTP 0.11.1版,一切工作了好几个月。但是自从我将插件更新为1.4.2版以来,我的电子邮件就停止了工作。

根据我的发现,wp_mail()不仅在我的插件内部起作用。如果我将其保留在主题文件等中的任何位置,则会立即发送电子邮件。但是从我的插件内部,每次都会得到此异常:

  "errors": {
    "wp_mail_failed": [
      "Could not instantiate mail function."
    ]
  },
  "error_data": {
    "wp_mail_failed": {
      "to": [
        "oibrahim@folio3.com"
      ],
      "subject": "Form Error",
      "message": "<dl><dt>Error Logged:<\/dt> <dd>{\"MembershipNumber\":null,\"Success\":false,\"Message\":\"The combination is incorrect\",\"contactInfo\":{\"PrimaryContactNumber\":null,\"AlternateNumber\":null,\"MobileNumber\":null,\"OtherPhone1\":null,\"Email\":null},\"membership\":{\"EffectiveDate\":null,\"ExpiryDate\":null,\"planInfo\":null,\"MembershipSubProgram\":null},\"address\":{\"HomeAddress\":null,\"MailingAddress\":null,\"BillingAddress\":null},\"slxConstantInfo\":[],\"Token\":null}<\/dd><dt>Timestamp:<\/dt> <dd>Monday, April 22nd, 2019 @ 03:16:30 PM<\/dd><dt>Referrer:<\/dt> <dd>renew\/step1<\/dd><dt>User:<\/dt> <dd> \n<br>\n<br>\n<br>\n<\/dd><\/dl>",
      "headers": [

      ],
      "attachments": [

      ],
      "phpmailer_exception_code": 2
    }
  }
}

如果我将WP Mail SMTP插件降级,一切将再次正常运行。因此,该插件肯定是一个问题。也许在我调用wp_mail()函数的插件中,WP Mail SMTP的设置尚未加载或类似的设置。

由于我在生产站点上运行了此代码,因此我们将非常感谢您提供任何快速帮助。提前致谢!

编辑:仅添加一些细节,WP Mail SMTP测试电子邮件运行正常!

2 个答案:

答案 0 :(得分:0)

could not instantiate mail function错误意味着您没有安装本地邮件服务器,但是只有在使用mail()时才会发生–如果您使用SMTP,则不会发生。因此,听起来您的怀疑是正确的– wp_mail的配置由于某种原因未加载,或者SMTP插件未按预期运行。

答案 1 :(得分:0)

没关系。我在WP MAIL SMTP支持论坛上发布,但未得到任何回应。我发现phpmailer对象没有在我的插件中保存修改后的设置。因此,这是我为使事情正常运行而实施的变通办法,尽管我知道这不是最佳解决方案。

我在插件的init中放置了以下操作:

/**
 *  Reconfigure SMTP setting to make WP MAIL SMTP plugin work
 */
add_action( 'phpmailer_init', 'reconfigure_smtp' );
function reconfigure_smtp( $phpmailer ) {
    $SMTPhost = get_option('smtp_host');
    $SMTPport = get_option('smtp_port');
    $FromEmail = get_option('mail_from');
    $FromName = get_option('mail_from_name');
    $phpmailer->isSMTP();     
    $phpmailer->Host =$SMTPhost;
    $phpmailer->Port = $SMTPport;
    $phpmailer->From = $FromEmail;
    $phpmailer->FromName = $FromName;
}

这只是获取WP MAIL SMTP存储的选项,然后重新配置phpmailer实例。这只是迫切需要尽快解决问题的结果。