当前位置:首页教程中心网站教程解决 WP-Mail-SMTP 插件带 $header 参数发信失败的问题

解决 WP-Mail-SMTP 插件带 $header 参数发信失败的问题

在使用 WordPress 搭建网站时,邮件发送功能是很多插件正常运行的基础。但有些虚拟主机不支持自带的邮件发送功能,这时 WP-Mail-SMTP 插件就成了常用的解决方案,它能让网站通过 QQ、163、新浪等第三方邮件服务器发送邮件,有效避免邮件进入垃圾箱的问题。不过,在使用该插件时,有时会遇到一些特殊的发信失败情况,尤其是当代码中带有 $header 参数时。

问题背景

有用户反馈,在安装 WP-Mail-SMTP 插件前,使用 wp_mail 函数发信虽然能成功,但邮件 100% 进入垃圾箱,由于使用的是虚拟主机,没有权限修改相关配置,所以选择安装 WP-Mail-SMTP 插件。然而,安装后却出现了邮件发送失败的情况,而之前的发信代码在未安装插件时是正常的。

问题原因分析

WP-Mail-SMTP 插件的工作原理

该插件的核心工作机制如下:
  • 过滤 wp_mail_from,将邮件发送者地址($phpmailer->From)设置为插件中 “From Email” 选项所配置的值;
  • 过滤 wp_mail_from_name,将发送者名称($phpmailer->FromName)设置为插件中 “From Name” 选项的值;
  • 通过 phpmailer_init 钩子配置 SMTP 相关信息,确保邮件通过指定的第三方服务器发送。

发信代码与冲突点

用户的发信代码如下:
$headers[] = 'Content-Type: text/html; charset=UTF-8';
$headers[] = 'From: ' . $blogname . ' <' . $adminemail . '>';
wp_mail( $author_name . ' <' . $author_email . '>', $mail_title, $mail_txt, $headers );
从代码来看,似乎没有明显错误。但通过错误日志排查发现,问题出在发送者邮件地址不匹配上:
  • 代码中header参数里的From地址(即adminemail)来自 WordPress 常规设置中的邮件地址;
  • 而 WP-Mail-SMTP 插件中配置的授权邮件地址与上述地址不同。
由于插件会强制使用自身配置的授权邮箱作为发送地址,当 $header 中指定的 From 地址与之不一致时,就会导致邮件发送失败。

解决方案

温馨提示:

文章标题:解决 WP-Mail-SMTP 插件带 $header 参数发信失败的问题

文章链接:https://www.muooy.cn/2349.html

更新时间:2025年07月08日

1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:305582964@qq.com,我们将第一时间处理!

2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。

3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读用户协议免责声明

给TA打赏
共{{data.count}}人
人已打赏
网站教程

解决七牛云存储 PHP SDK 的 file_put_contents 报错问题

2025-7-7 20:44:34

网站教程

WordPress 定时清理未登录恶意注册用户的方法

2025-7-8 21:39:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
购物车
优惠劵
今日签到
搜索