Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email Salesforce VF电子邮件模板是否要求保留相关对象?_Email_Salesforce_Visualforce - Fatal编程技术网

Email Salesforce VF电子邮件模板是否要求保留相关对象?

Email Salesforce VF电子邮件模板是否要求保留相关对象?,email,salesforce,visualforce,Email,Salesforce,Visualforce,当一个新的潜在客户进来时,我想使用一个before触发器和一个包含潜在客户字段值的Visualforce电子邮件模板来使用SingleEmailMessage类发送电子邮件。正在生成电子邮件,但所有lead字段都为空,即使(通过System.Debug)它们在调用中确实有值 由于我通过mail.setWhatId(lead.Id)方法传递仍然未保存的lead Id,我开始认为mail类正在使用Id值并尝试进行数据库查找,而不是作为内存中仍然未保存的lead的引用 有人知道情况是否如此吗?当潜在客

当一个新的潜在客户进来时,我想使用一个before触发器和一个包含潜在客户字段值的Visualforce电子邮件模板来使用SingleEmailMessage类发送电子邮件。正在生成电子邮件,但所有lead字段都为空,即使(通过
System.Debug
)它们在调用中确实有值

由于我通过
mail.setWhatId(lead.Id)
方法传递仍然未保存的lead Id,我开始认为mail类正在使用Id值并尝试进行数据库查找,而不是作为内存中仍然未保存的lead的引用

有人知道情况是否如此吗?当潜在客户已经存在时,我们班的工作就完美无缺了


如果Apex mail类执行DB读取,那么在保存lead之前需要发送、发送电子邮件并更新lead字段值的情况下,是否有任何模式建议?我不能使用工作流电子邮件通知,因为电子邮件是发送给客户的,而且还有一些额外的Apex代码,根据一些潜在客户字段从现有帐户记录中排序要获取的地址——因此我认为首先需要使用VF电子邮件模板。

setWhatId
(以及几乎所有将ID值作为参数的方法)确实希望该行已经被持久化。为了避免这种情况,您应该能够在before触发器中执行字段更新,并添加after触发器以发送电子邮件。

通常,如果您希望对触发器对象本身执行字段更新或验证,请使用before触发器。任何需要数据存在于其中的操作都可以使用before触发器数据库(如跨对象更新、汇总、电子邮件)应使用after触发器。