You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Salesforce中向自定义对象实体发送邮件(APEX解决方案)

解决Salesforce中给自定义对象发送邮件的问题

我之前也踩过一模一样的坑!Salesforce的标准邮件工具不管是UI操作还是常规Apex方法,都默认绑定User、Contact或者Person Account记录,想用自定义对象当收件人确实卡得头疼。不过用Apex有个绕开限制的办法,亲测有效:

核心思路

别用setContactIds()setTargetObjectIds()这类绑定标准对象的方法,直接用setToAddresses()传入自定义对象里的邮箱字符串就行,完全摆脱必须关联User/Contact的要求。

代码示例

假设你的自定义对象叫External_Entity__c,存邮箱的字段是Email__c,下面是完整的Apex实现代码:

// 获取目标自定义对象记录
External_Entity__c targetEntity = [SELECT Id, Name, Email__c FROM External_Entity__c WHERE Id = '你的记录ID' LIMIT 1];

// 先校验邮箱格式有效性
if(String.isNotEmpty(targetEntity.Email__c) && targetEntity.Email__c.contains('@')){
    // 创建单邮件消息实例
    Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
    
    // 设置邮件基本信息
    mail.setSubject('测试邮件:给自定义实体发送');
    mail.setPlainTextBody('这是发给自定义实体「'+targetEntity.Name+'」的测试邮件内容');
    
    // 关键操作:直接传入邮箱地址,无需绑定标准对象ID
    mail.setToAddresses(new List<String>{targetEntity.Email__c});
    
    // 执行发送
    Messaging.SendEmailResult[] results = Messaging.sendEmail(new List<Messaging.SingleEmailMessage>{mail});
    
    // 处理发送结果
    for(Messaging.SendEmailResult result : results){
        if(result.isSuccess()){
            System.debug('邮件发送成功!');
        } else {
            System.debug('发送失败,错误信息:'+result.getErrors()[0].getMessage());
        }
    }
} else {
    System.debug('自定义对象的邮箱字段无效,请检查');
}

注意事项

  • 建议给自定义对象的邮箱字段加验证规则,提前拦截格式错误的邮箱,减少发送失败概率。
  • Salesforce有单日邮件发送额度限制,免费版和付费版额度不同,批量发送时要注意控制数量。
  • 如果是批量给多个自定义对象发邮件,同样用setToAddresses传入邮箱列表即可,不用绑定任何标准对象ID。

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

火山引擎 最新活动