Table of Contents

背景

近期升级到WordPress 6.9后,很多WordPress用户发现不能发送邮件了,直接影响到评论回复邮件通知、注册邮件等。

WordPress 6.9 版本修改了核心邮件功能,移除了setFrom()方法中的false标记,现在它会根据你的From头显示地址设置发件人地址,或者默认为wordpress@yourdomain.com,发件人地址若未通过收件服务器的认证,会被判定为 “伪造邮件” 而被拦截。特别是使用第三方的SMTP 服务器发送邮件就会遇见上述问题。

解决办法

将下面代码添加到当前主题函数模板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插件,实现发邮件功能,比如:

FluentSMTP

WP Mail SMTP

Easy WP SMTP

声明
1.本网站名称: 盲盒博客
2.本站永久网址:https://exakit.com
3.本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长support@exakit.com
4.本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责
5.本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6.本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新