如何在Salesforce的email-to-case功能中使用邮件头的“Reply-To:”字段
Email-to-Case 优先取Reply-To字段填充suppliedEmail解决方案
这是Salesforce 2021年夏季版本(v52)的默认逻辑变更,此前版本默认优先取Reply-To头填充suppliedEmail,版本更新后默认改为优先取From发件人地址,可按以下优先级选择解决方案:
- 原生配置修改(推荐无代码方案)
- 进入Setup,搜索
Email-to-Case进入配置页 - 找到你当前使用的路由规则,点击编辑
- 勾选*使用 Reply-To 电子邮件地址(如果存在)*选项,保存后10分钟内生效
- 进入Setup,搜索
- 低代码流方案(适用于配置不生效或者有自定义逻辑场景)
- 新建记录触发流,触发对象为Case,触发时机为记录创建时
- 添加获取记录节点,关联当前Case绑定的
EmailMessage原始邮件记录 - 添加判断分支:当
EmailMessage.ReplyToAddress不为空时,执行赋值节点,将该值覆盖写入Case.SuppliedEmail字段 - 激活流即可生效
- Apex代码方案(适用于已经有Case触发器的定制化实例)
直接在Case的before insert触发器中添加取值逻辑,参考代码如下:trigger CaseSetSuppliedEmail on Case (before insert) { Set<Id> relatedEmailIds = new Set<Id>(); for(Case newCase : Trigger.new){ if(newCase.SourceId != null && newCase.SourceId.getSObjectType() == EmailMessage.SObjectType){ relatedEmailIds.add(newCase.SourceId); } } if(!relatedEmailIds.isEmpty()){ Map<Id, EmailMessage> emailMap = new Map<Id, EmailMessage>([ SELECT Id, ReplyToAddress FROM EmailMessage WHERE Id = :relatedEmailIds ]); for(Case newCase : Trigger.new){ if(emailMap.containsKey(newCase.SourceId) && String.isNotBlank(emailMap.get(newCase.SourceId).ReplyToAddress)){ newCase.SuppliedEmail = emailMap.get(newCase.SourceId).ReplyToAddress; } } } }
内容的提问来源于stack exchange,提问作者Keith Owens
相关产品推荐
相关产品推荐

