Wordpress 从 4.1->4.7 更新,重置密码时出现 phpmailerException
Wordpress updated from 4.1->4.7, got phpmailerException when resetting password
我们将 Wordpress 从 4.1.something 更新到 4.7.3。一切正常,但用户重置密码时包含新密码的邮件除外。密码还是重设了,但是没有收到重设密码的邮件,导致无法登陆。据我所知,只有这家邮箱失败了,注册邮件之类的还是可以的。
代码应该没有任何问题,它已经工作了很多年。但是更新时显然有些东西搞砸了。尝试发送邮件时,出现以下错误。
PHP Fatal error: Uncaught exception 'phpmailerException' with message 'Invalid address: (setFrom) service' in /var/www/site-adress/public_html/wp/wp-includes/class-phpmailer.php:1023
Stack trace:
#0 /var/www/site-adress/public_html/wp/wp-includes/pluggable.php(352): PHPMailer->setFrom('service', 'WordPress', false)
#1 /var/www/site-adress/public_html/wp-content/themes/site/functions.php(320): wp_mail('dummy.mail...', 'Site: passwor...', 'Your new passwo...', 'From: service')
#2 [internal function]: {closure}('')
#3 /var/www/site-adress/public_html/wp/wp-includes/class-wp-hook.php(298): call_user_func_array(Object(Closure), Array)
#4 /var/www/site-adress/public_html/wp/wp-includes/class-wp-hook.php(323): WP_Hook->apply_filters('', Array)
#5 /var/www/site-adress/public_html/wp/wp-includes/plugin.php(453): WP_Hook->do_action(Array)
#6 /var/www/site-adress/public_html/wp/wp-admin/admin-ajax.php(101): do_action in /var/www/site-adress/public_html/wp/wp-includes/class-phpmailer.php on line 1023
有谁知道这个应该怎么解决?这个信息是什么意思?问题出在哪里?
谢谢,提前。
PHPMailer 说它无法发送,因为您要求它使用的 "from" 地址无效。它被设置为 service
,不会去任何地方。您需要找到在 Wordpress 配置中设置该地址的位置并将其更新为正确的电子邮件地址,然后 PHPMailer 才能工作。
您可以通过将以下内容添加到您的主题中来覆盖这些电子邮件的电子邮件地址 functions.php
:
add_filter( 'wp_mail_from', 'new_mail_from' );
add_filter( 'wp_mail_from_name', 'new_mail_from_name' );
function new_mail_from( $old ) {
return get_option( 'admin_email' );
}
function new_mail_from_name( $old ) {
return get_option( 'blogname' );
}
然后,在 WordPress 中使用 Settings > General
更改电子邮件地址和站点名称。
感谢下面的 PS 澄清:此代码可以按原样放入 functions.php
主题文件中,无需任何修改。然后,您使用 WordPress 管理界面更改发送电子邮件地址("Email Address" 字段位于设置 > 常规页面)。
我必须禁用插件才能正常工作
我们将 Wordpress 从 4.1.something 更新到 4.7.3。一切正常,但用户重置密码时包含新密码的邮件除外。密码还是重设了,但是没有收到重设密码的邮件,导致无法登陆。据我所知,只有这家邮箱失败了,注册邮件之类的还是可以的。
代码应该没有任何问题,它已经工作了很多年。但是更新时显然有些东西搞砸了。尝试发送邮件时,出现以下错误。
PHP Fatal error: Uncaught exception 'phpmailerException' with message 'Invalid address: (setFrom) service' in /var/www/site-adress/public_html/wp/wp-includes/class-phpmailer.php:1023
Stack trace:
#0 /var/www/site-adress/public_html/wp/wp-includes/pluggable.php(352): PHPMailer->setFrom('service', 'WordPress', false)
#1 /var/www/site-adress/public_html/wp-content/themes/site/functions.php(320): wp_mail('dummy.mail...', 'Site: passwor...', 'Your new passwo...', 'From: service')
#2 [internal function]: {closure}('')
#3 /var/www/site-adress/public_html/wp/wp-includes/class-wp-hook.php(298): call_user_func_array(Object(Closure), Array)
#4 /var/www/site-adress/public_html/wp/wp-includes/class-wp-hook.php(323): WP_Hook->apply_filters('', Array)
#5 /var/www/site-adress/public_html/wp/wp-includes/plugin.php(453): WP_Hook->do_action(Array)
#6 /var/www/site-adress/public_html/wp/wp-admin/admin-ajax.php(101): do_action in /var/www/site-adress/public_html/wp/wp-includes/class-phpmailer.php on line 1023
有谁知道这个应该怎么解决?这个信息是什么意思?问题出在哪里?
谢谢,提前。
PHPMailer 说它无法发送,因为您要求它使用的 "from" 地址无效。它被设置为 service
,不会去任何地方。您需要找到在 Wordpress 配置中设置该地址的位置并将其更新为正确的电子邮件地址,然后 PHPMailer 才能工作。
您可以通过将以下内容添加到您的主题中来覆盖这些电子邮件的电子邮件地址 functions.php
:
add_filter( 'wp_mail_from', 'new_mail_from' );
add_filter( 'wp_mail_from_name', 'new_mail_from_name' );
function new_mail_from( $old ) {
return get_option( 'admin_email' );
}
function new_mail_from_name( $old ) {
return get_option( 'blogname' );
}
然后,在 WordPress 中使用 Settings > General
更改电子邮件地址和站点名称。
感谢下面的 PS 澄清:此代码可以按原样放入 functions.php
主题文件中,无需任何修改。然后,您使用 WordPress 管理界面更改发送电子邮件地址("Email Address" 字段位于设置 > 常规页面)。
我必须禁用插件才能正常工作