我有一个使用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测试电子邮件运行正常!
答案 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实例。这只是迫切需要尽快解决问题的结果。