Как отправить электронное письмо на произвольный адрес и объединить значения Lead? - PullRequest
2 голосов
/ 14 февраля 2012

Мне нужно отправить электронное письмо:

  • на произвольный адрес электронной почты
  • с использованием шаблона электронной почты
  • объединение значений из отведения

Код будет выглядеть примерно так:

Messaging.SingleEmailMessage msg = new Messaging.SingleEmailMessage();
msg.setToAddresses(new String[] { 'me@somedomain.com' });
msg.setSaveAsActivity(false);

// this causes a runtime error. Lead ID not allowed 
msg.setWhatId(lead.Id);

msg.setTemplateId(templateID);
messages.add(msg);

Проблема в том, что вы не можете использовать идентификатор потенциального клиента для WhatID. Я не отправляю электронное письмо ведущему, поэтому не могу использовать его для TargetObjectId.

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Раздражает, что SFDC по-прежнему не поддерживает более гибкий шаблонный контекст, не так ли?Учитывая ваши ограничения, я думаю, что у вас есть варианты:

  • сделать свою собственную замену шаблонов, динамически загружая шаблон и заменяя доморощенные теги полями лидов (например, $ LEAD.NAME или что-то еще)
  • временно сохраните Lead как поддерживаемый объект (возможно, учетную запись?), Сохраните его, используйте его в качестве WhatId, отправьте электронное письмо, а затем выполните откат / удаление (EDIT: как указано выше, откат, по-видимому, «отсылает» электронные письма)так что не используйте это.)
  • используйте стороннее или нестандартное решение для работы с почтой, которое предлагает объединение на основе шаблонов, более гибкое, чем Apex, возможно, через WS API

Я играл со всеми этими подходами, но я серьезно применил только один # 3.Вариант 1 кажется привлекательным, если вы можете заставить его работать.

1 голос
/ 14 февраля 2012

Я не думаю, что это возможно, по крайней мере, с шаблонами электронной почты 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 будет «отсылать» электронные письма, поэтому он не будет работать здесь) ,

Я бы попробовал поместить всю информацию из первой записи, которая вам нужна, в контакт, который вы создаете для отправки электронного письма, но это ужасный хак. И опять же, создание и удаление контакта для отправки электронного письма - это уже взлом, я не могу себе представить, что это делает его намного хуже.

...