2011-07-16 23 views
0

当新主管进来时,我想使用before触发器和包含前导字段值的Visualforce电子邮件模板来使用SingleEmailMessage类发送电子邮件。电子邮件正在生成,但是所有的前导字段都是空的,即使(通过System.Debug已知)它们确实有值进入呼叫。Salesforce VF电子邮件模板是否需要保留相关对象?

由于我通过mail.setWhatId(lead.Id)方法传递尚未保存的潜在客户ID,我开始认为邮件类正在使用Id值并尝试执行数据库查找,而不是作为参考内存中尚未得到保存的领先优势。

有谁知道这是怎么回事?当班主任已经存在时,我的班级完美无缺地工作。

如果是Apex邮件类进行数据库读取的情况,那么在保存潜在客户之前需要发送并通过电子邮件发送并更新铅字段值的情况下,有哪些模式建议?我无法使用Workflow电子邮件通知,因为电子邮件正在发送给客户,并且还有一些额外的Apex代码,用于根据某些Lead字段从现有帐户记录中提取哪些地址 - 因此我认为需要使用VF电子邮件模板。

回答

2

setWhatId(以及几乎所有将ID值作为参数的方法)肯定会预期该行已被保留。为了解决这个问题,你应该只能在before触发器中进行字段更新,并添加一个after触发器来发送电子邮件。

+2

通常,如果您想对触发器对象本身进行字段更新或验证,请使用before触发器。任何需要数据存在于数据库中的事物,例如交叉对象更新,汇总,电子邮件应使用after触发器。 –