在 Salesforce 中,“Too Many Email Invocations: 11” 错误通常表示您的组织在单个事务中超过了 Apex 电子邮件调用的限制。Salesforce 设置这些限制是为了防止滥用并确保公平使用。以下是解决该问题的方法:
理解限制
- Salesforce 允许每个事务中最多进行 10 次电子邮件调用。
- 如果使用
SingleEmailMessage
或MassEmailMessage
,每次调用可以发送多封邮件。
解决步骤
1. 合并电子邮件逻辑
- 检查触发电子邮件调用的代码。
- 如果单个事务中有多个电子邮件触发器,将它们合并为一次调用。
2. 使用批量发送功能
- 如果需要发送多封邮件,请考虑使用
MassEmailMessage
类,而不是SingleEmailMessage
。这可以减少调用次数。
List<Messaging.MassEmailMessage> emails = new List<Messaging.MassEmailMessage>();
// 准备邮件并将其添加到列表中
Messaging.sendEmail(emails);
3. 检查触发器和工作流
- 检查触发器、工作流或流程生成器中是否有多余或递归的电子邮件调用。
- 禁用可能与其他自动化重复的无效电子邮件逻辑。
4. 优化批处理
- 对于批量处理,限制每个批次发送一次邮件,或将电子邮件逻辑移动到一个单独的异步过程。
5. 调试并测试
- 使用调试日志追踪电子邮件调用的确切次数及其来源。
- 验证执行流程,确保只在必要时发送电子邮件。
6. 使用替代通知方法
- 如果适用,可以用其他通知方式替代部分电子邮件通知,例如使用 Chatter 帖子、推送通知或任务创建。
工具与资源
- 电子邮件限制文档:参考 Salesforce 文档了解 Apex 的电子邮件限制。
- 调试日志:利用调试日志查明问题所在以及调用超限的原因。
如果需要帮助审查或重构具体的 Apex 代码,请告诉我!