You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce中woocommerce_email_headers过滤器添加CC邮箱失效问题

问题分析与解决方案

你的代码核心问题是错误地将邮件头($headers)转换为数组,而WooCommerce的woocommerce_email_headers过滤器要求返回的是字符串格式的邮件头内容,数组格式会导致邮件发送程序无法正确解析CC字段,进而导致CC邮箱收不到邮件。

修正后的代码

function add_cc_to_certain_emails( $headers, $object ) {
    // 指定需要添加CC的邮件类型
    $add_cc_to = array(
        'customer_refunded_order',
        'customer_partially_refunded_order',
    );

    $cc_email = 'mrbean@gmail.com';

    // 匹配目标邮件类型时追加CC头
    if ( in_array( $object, $add_cc_to ) ) {
        // 如果原headers为空,直接初始化;否则追加换行和CC字段
        if ( empty( $headers ) ) {
            $headers = 'Cc: ' . $cc_email . "\r\n";
        } else {
            $headers .= 'Cc: ' . $cc_email . "\r\n";
        }
    }

    return $headers;
}
add_filter( 'woocommerce_email_headers', 'add_cc_to_certain_emails', 10, 2 );

关键修正点

  • 移除了utf8_decode():邮箱地址不需要该编码转换,反而可能引发不必要的编码异常
  • 保持邮件头为字符串格式:直接在原headers后追加CC字段,确保邮件发送程序能正确解析
  • 增加空值判断:避免原headers为空时出现格式错误

额外排查建议

  1. 改用SMTP发送邮件:WordPress默认的wp_mail()函数依赖服务器的mail()函数,容易被邮件服务商拦截。安装SMTP类插件配置正规邮箱账号发送,能大幅提升邮件送达率
  2. 检查服务器邮件日志:联系主机服务商查看邮件发送日志,确认CC邮件是否被服务器发出,以及是否存在被拒收的记录
  3. 验证邮箱地址格式:确保CC邮箱地址完全正确,无拼写错误

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 08:18:11