最近升级到WordPress 6.9后,很多WordPress用户发现不能发送邮件了,直接影响到评论回复邮件通知、注册邮件等。
发现问题
检查过后发现,SMTP插件的配置是正确的,也没有改过,但发送测试邮件时显示如下:
这个错误提示非常明确:SMTP服务器要求发件人地址必须与认证用户名相同。这是很多邮件服务商(如QQ邮箱、163邮箱、Gmail等)的安全限制,但这个功能之前一直都是好的。大概率就是升级WordPress 6.9导致的,这不算问题,是新版本改进了邮件发送功能,出错的原因可能和原来的SMTP插件或功能有关。具体的只能等原来开发者修复了。
大概原因是,WordPress 6.9 修改了核心邮件功能,移除了setFrom()方法中的false标记,现在它会根据你的From头显示地址设置发件人地址,或者默认为wordpress@yourdomain.com,发件人地址若未通过收件服务器的认证,会被判定为 “伪造邮件” 而被拦截。
解决方法
将下面代码添加到当前主题函数模板functions.php中:
function use_no_sender( $phpmailer ) {
$phpmailer->Sender = '';
}
add_action( 'phpmailer_init', 'use_no_sender' );
通过重置Sender参数适配旧版邮件器逻辑。
完整代码
// 兼容WP6.9配置邮件
add_action('phpmailer_init', 'mail_smtp');
function mail_smtp( $phpmailer ) {
$phpmailer->FromName = '爱资源网'; // 发件人昵称
$phpmailer->Host = 'smtp.qq.com'; // 邮箱SMTP服务器
$phpmailer->Port = 465; // SMTP端口,不需要改
$phpmailer->Username = '123456@qq.com'; // 邮箱账户
$phpmailer->Password = 'aabbccddffgg'; // 此处填写邮箱生成的授权码,不是邮箱登录密码
$phpmailer->From = '123456@qq.com'; // 邮箱账户同上
$phpmailer->SMTPAuth = true;
$phpmailer->SMTPSecure = 'ssl'; // 端口25时 留空,465时 ssl,不需要改
$phpmailer->IsSMTP();
$phpmailer->Sender = ''; // 纠正WP6.9邮件问题
}
其他方法
步骤一:关闭原来的SMTP功能
在原来的主题或插件中关闭SMTP功能,但是要先记录好原来的配置信息。
步骤二:安装其它SMTP插件
也可以通过安装相关SMTP插件,实现发邮件功能,比如:
WordPress搭建的网站很多都是需要用到邮件收发功能,比如用户注册会发送验证确认邮件、找回密码会发送新密码邮件、修改用户...
7
若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!欢迎打赏!



