기존 템플릿을 사용하여 SingleEmailMessage() 함수로 Apex에서 전자 메일을 보내고이를 사용자 지정 개체 레코드와 연결하려고합니다.Salesforce Apex SingleEmailMessage to Template to User
mail = new Messaging.SingleEmailMessage();
mail.setTemplateId('00Xb0000000iwks');
mail.setTargetObjectId(a.CAccount__r.OwnerId); //lookup on account
mail.setToAddresses(new List<String>{a.CAccount__r.Owner.Email}); //email from account owner
mail.setTreatTargetObjectAsRecipient(false);
mail.setSaveAsActivity(false);
mail.setWhatId(a.Id);
this.mails.add(mail);
여기서 템플릿 데이터에 맞춤 개체 레코드 "a"를 채우고 싶습니다. 그러나 나는 다음과 같은 오류가 발생합니다 :
WhatId is not available for sending emails to UserIds.
은 아무데도 내가 에이펙스의 이메일 만 setTargetObjectId에 연락처 개체로 전송 될 수 있음을 명시 적으로 답을() 찾을 수 있습니다. 내가하고 싶은 일은 이메일을 보내는 유일한 목적으로 연락처를 일시적으로 만드는 것입니다. 난의 더미 접촉을 만든 경우에만 차이 - 실제로 잘 작동 http://opfocus.com/sending-emails-in-salesforce-to-non-contacts-using-apex/
// Pick a dummy Contact
Contact c = [select id, Email from Contact where email <> null limit 1];
// Construct the list of emails we want to send
List<Messaging.SingleEmailMessage> lstMsgs = new List<Messaging.SingleEmailMessage>();
Messaging.SingleEmailMessage msg = new Messaging.SingleEmailMessage();
msg.setTemplateId([select id from EmailTemplate where DeveloperName='My_Email_Template'].id);
msg.setWhatId([select id from Account limit 1].id);
msg.setTargetObjectId(c.id);
msg.setToAddresses(new List<String>{'[email protected]'});
lstMsgs.add(msg);
// Send the emails in a transaction, then roll it back
Savepoint sp = Database.setSavepoint();
Messaging.sendEmail(lstMsgs);
Database.rollback(sp);
// For each SingleEmailMessage that was just populated by the sendEmail() method, copy its
// contents to a new SingleEmailMessage. Then send those new messages.
List<Messaging.SingleEmailMessage> lstMsgsToSend = new List<Messaging.SingleEmailMessage>();
for (Messaging.SingleEmailMessage email : lstMsgs) {
Messaging.SingleEmailMessage emailToSend = new Messaging.SingleEmailMessage();
emailToSend.setToAddresses(email.getToAddresses());
emailToSend.setPlainTextBody(email.getPlainTextBody());
emailToSend.setHTMLBody(email.getHTMLBody());
emailToSend.setSubject(email.getSubject());
lstMsgsToSend.add(emailToSend);
}
Messaging.sendEmail(lstMsgsToSend);
: 누군가가