2011-07-16 51 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觸發器。 –