近期升级到WordPress 6.9后,很多WP用户发现不能发送邮件了,直接影响到评论回复邮件通知、注册邮件等。
大概原因是,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插件,实现发邮件功能,比如:
本站文章大部分为原创,用于个人学习记录,可能对您有所帮助,仅供参考!

我的微信
微信号已复制
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!






