Salesforce通过Apex发送电子邮件

时间:2018-11-14 15:18:39

标签: email salesforce apex

由于我必须包含记录的附件,因此我决定使用能够将电子邮件发送到特定电子邮件列表的代码,因此我决定使用apex类代替电子邮件警报。该对象(自定义对象)必须使用某些记录字段填充电子邮件模板中的某些字段。我实现了以下代码

Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setToAddresses(lista); 
mail.setTemplateId('00X21000000QR22');
//mail.setWhatId(idMinuta);
mail.setTargetObjectId('005d0000005NMIx');
mail.setSaveAsActivity(false);
List<Messaging.Emailfileattachment> fileAttachments = new List<Messaging.Emailfileattachment>();
for (ContentVersion document: documents) 
{
   Messaging.Emailfileattachment efa = new Messaging.Emailfileattachment();
   efa.setFileName(document.Title);
   efa.setBody(document.VersionData);   
   fileAttachments.add(efa);
}
mail.setFileAttachments(fileAttachments);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });

我知道,要使字段合并,必须使用WhatId方法。在相关代码中,我已对其进行了注释,因为它会生成错误(INVALID_ID_FIELD,WhatId不可用于向UserIds发送电子邮件。)

我的问题是,是否可以使用自定义对象执行此操作。我对salesforce文档有些困惑,因为它看起来像该方法支持自定义对象,或者如果我忘记要包含在代码中的内容。

enter image description here

如果我保留WhatID行为注释,则实际上会发送带有附件和模板的电子邮件,但不会填充该电子邮件。

我真的需要这种解决方案,因为组织在这个对象中至少有20个电子邮件模板,对我来说,只需传递模板的ID即可,而不是针对每种情况制作带有20种不同html代码的代码,< / p>

非常感谢

1 个答案:

答案 0 :(得分:2)

请在Salesforce StackExcahnge https://salesforce.stackexchange.com/

上发布此问题