Я не думаю, что это возможно, по крайней мере, с шаблонами электронной почты salesforce. Даже если вы смогли указать в качестве идентификатора, что вы не можете использовать шаблон с setToAddresses, setTargetObjectId является обязательным при использовании шаблонов:
Идентификатор контакта, ведущего или пользователя, которому будет отправлено электронное письмо.
С http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_outbound_single.htm?SearchType=Stem&Highlight=WhatId|whatId|whatIds
Чтобы обойти это, мне пришлось создать контакт, заполнить его электронную почту, сохранить его, отправить электронное письмо, а затем удалить контакт (Database.rollback будет «отсылать» электронные письма, поэтому он не будет работать здесь) ,
Я бы попробовал поместить всю информацию из первой записи, которая вам нужна, в контакт, который вы создаете для отправки электронного письма, но это ужасный хак. И опять же, создание и удаление контакта для отправки электронного письма - это уже взлом, я не могу себе представить, что это делает его намного хуже.