如何在WordPress的PHPMailer中配置DKIM且不受WP更新覆盖
无需修改WordPress核心实现PHPMailer DKIM签名的方案
方法一:利用官方钩子自定义配置
WordPress提供了phpmailer_init钩子,能在PHPMailer实例初始化后、发送邮件前修改它的属性,完全不会受核心文件更新影响。把以下代码添加到主题的functions.php,或者封装成简单的自定义插件(更推荐,换主题也不受影响):
add_action('phpmailer_init', function($phpmailer) { // 开启DKIM签名 $phpmailer->DKIM_enable = true; // 填写你的域名 $phpmailer->DKIM_domain = 'yourdomain.com'; // 填写DKIM选择器(对应DNS记录里的前缀) $phpmailer->DKIM_selector = 'default'; // 加载私钥文件(替换为你的私钥路径) $phpmailer->DKIM_private = file_get_contents('/wp-content/keys/dkim-private.key'); // 可选:设置签名标识邮箱 $phpmailer->DKIM_identity = 'noreply@yourdomain.com'; // 可选:指定哈希算法,默认sha256 $phpmailer->DKIM_hash = 'sha256'; });
方法二:使用现成插件
如果不想写代码,直接用支持DKIM的邮件插件即可,这类插件都基于官方钩子实现,安全可靠:
- WP Mail SMTP:在插件的高级设置面板里,找到DKIM签名选项,填入域名、选择器和私钥就能启用。
- Post SMTP:不仅支持DKIM可视化配置,还自带邮件测试功能,能帮你验证签名是否生效。
注意事项
- 无论用哪种方法,都必须先在域名的DNS解析中添加DKIM TXT记录,格式为
[选择器]._domainkey.yourdomain.com,值包含公钥信息,等待DNS生效后再测试。 - 绝对不要直接修改
PHPMailer.php或pluggable.php等核心文件,WordPress更新后这些修改会被完全覆盖。
内容的提问来源于stack exchange,提问作者Overbeeke
相关产品推荐
相关产品推荐

