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

Magento 2多店铺邮件发件人错误 $store.frontend_name不生效修复

多店铺邮件发件人匹配错误修复方案

故障表现

  • 站点共配置2个店铺,所有发送给客户的邮件统一从单个店铺的发件人身份发出,未按邮件所属店铺匹配对应发件人信息
  • 核查邮件模板配置,主题部分已正确调用$store.frontend_name变量,代码如下:
<!--@subject {{trans "Your %store_name order has been canceled" store_name=$store.frontend_name}} @-->
  • 模板变量可正常渲染对应店铺名称,但发件人匹配故障仍存在

核心原因

模板内的$store.frontend_name变量仅负责主题、正文中的店铺名称内容渲染,和发件人身份的读取、匹配逻辑完全独立,因此调整模板代码无法修复该类故障。

分步修复操作

  • 检查分店铺发件人配置
    进入后台「店铺 > 配置 > 常规 > 商店邮件地址」页面,逐次切换左上角的配置范围到对应店铺视图,取消每个发件人配置项的「使用默认值」勾选,填写该店铺对应的发件人名称、邮箱地址,全部配置完成后执行配置缓存清理。不要在全局配置范围填写固定发件人信息,会覆盖分店铺配置。
  • 检查邮件触发逻辑的店铺上下文传递
    如果存在自定义邮件触发逻辑、或者安装了第三方邮件相关插件,需要确认邮件发送前是否正确传入业务数据(比如订单、客户数据)所属的店铺ID:
    1. 发送邮件前需要将当前运行环境的店铺切换为业务数据对应的店铺,不要固定使用默认店铺
    2. 读取发件人配置时,必须指定读取范围为对应店铺,不要直接读取全局配置值,参考代码如下:
    // 切换当前环境为订单所属店铺
    $this->storeManager->setCurrentStore($order->getStoreId());
    // 从对应店铺的配置作用域读取发件人标识
    $senderIdentity = $this->scopeConfig->getValue(
        'sales_email/order_cancel/identity',
        \Magento\Store\Model\ScopeInterface::SCOPE_STORE,
        $order->getStoreId()
    );
    
  • 排查邮件队列的店铺标识缺失问题
    Magento 2.3及以上版本默认开启异步邮件队列,部分旧版本存在邮件入队时未存储对应店铺ID的缺陷,消费队列发送邮件时会自动fallback到默认店铺的发件人配置。可进入「店铺 > 配置 > 高级 > 系统 > 邮件发送设置」,临时关闭「异步发送」功能测试,如果关闭后发件人匹配正常,给邮件队列逻辑补充店铺ID的存取逻辑即可。
  • 排查SMTP类插件的强制覆盖配置
    多数第三方SMTP发信插件自带「强制覆盖发件人」功能,开启后会全局使用固定发件人信息,忽略分店铺的配置。进入对应插件的配置页,关闭强制覆盖发件人的选项,选择按店铺作用域读取发件人配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:24:29