如何在WordPress及WooCommerce中添加多个发件人邮箱地址?
在WooCommerce中添加多个订单通知回复邮箱的解决方案
问题背景
你尝试在WooCommerce的WooCommerce => Settings => Emails => Email Sender Options => Sender Address字段中用逗号分隔填写多个邮箱(比如support@mybusiness.com, myemail@gmail.com),但用户回复时邮箱地址被错误合并,导致投递失败,提示Address not found;此前尝试的PHP函数也未生效。
关键说明
首先要明确:Sender Address字段是用来设置邮件的发件人地址,本身不支持直接填写多个邮箱。这个字段的设计逻辑是单个发件人地址,强行填入多个邮箱会触发格式解析错误,也就是你遇到的地址被合并的问题。
如果需要让用户回复订单通知时,邮件能发送到多个邮箱,正确的做法是修改邮件的Reply-To头信息,而非修改发件人地址。
正确的PHP解决方案
之前的代码无效是因为处理Reply-To头的方式存在问题,以下是修正后的可用代码:
function custom_change_reply_to_address( $headers, $email_id, $order ) { // 可根据需求添加更多需要修改的订单通知邮件类型 $target_email_types = array( 'customer_completed_order', 'customer_processing_order', 'customer_on_hold_order' ); if ( in_array( $email_id, $target_email_types ) ) { // 替换为你需要接收回复的多个邮箱地址 $reply_to_emails = array( 'support@mybusiness.com', 'myemail@gmail.com' ); // 按照邮件标准格式拼接多个地址(逗号+空格分隔) $formatted_reply_to = implode( ', ', $reply_to_emails ); // 精准移除已存在的Reply-To头信息 $headers = preg_replace( '/^Reply-To:.*\r?\n/m', '', $headers ); // 添加新的多地址Reply-To头 $headers .= "Reply-To: $formatted_reply_to\r\n"; } return $headers; } add_filter( 'woocommerce_email_headers', 'custom_change_reply_to_address', 20, 3 );
代码修正点说明
- 提高钩子优先级至20,确保能覆盖WooCommerce默认的Reply-To设置
- 支持同时针对多种订单通知邮件类型配置回复地址
- 采用符合邮件头规范的多地址格式(逗号+空格分隔)
- 更精准地清除原有Reply-To头,避免残留或重复内容
使用方法
- 将上述代码添加到WordPress主题的
functions.php文件中 - 修改
$reply_to_emails数组内的邮箱地址为你的目标地址 - 保存文件后,测试发送订单通知,用户回复时邮件会自动投递到所有设置的邮箱
内容的提问来源于stack exchange,提问作者unity-student
相关产品推荐
相关产品推荐

