Context I have a JS button in the case layout that sends an email to the contact via Apex.

Problem How can I save that sent email to the case's Activity History?

I've found similar questions, like this one, but it wasn't replied, and I haven't been able to find any other useful information.

I've tried:


but it just saves it to the contact, which is not what I need.

Thanks in advance!


Note that, Only User, Contact, Lead, or Person objects are allowed for targetObjectId and it is mandatory.

Ideally, if you want to send an email to Contact then put ContactId as targetObjectId

So, if you don't like to put Contact then use UserId as targetObjectId.

Moreover, if you have activity on Contact it will also be reflected under Account.

Following code save the email under ActivityHistory of Case, Contact and Account.

List<Messaging.SingleEmailMessage> messages = new List<Messaging.SingleEmailMessage>();
Messaging.SingleEmailMessage theMessage = new Messaging.SingleEmailMessage();



List<String> toAddress = new List<String>();
Messaging.SendEmailResult[] results = Messaging.sendEmail(messages);
  • I know, but my question is how can I save it under the case's ActivityHistory, not the contact's. Jul 9 '17 at 22:01
  • this will save under ActivityHistory of Case, Contact and Account Jul 9 '17 at 22:03
  • Oh, darn, the combination of the three! That was so stupid of me, I tried combining them, but never thought of using the three properties at the same time. True. Thanks a lot, Santanu! Jul 9 '17 at 22:12
  • OK but we often have Cases without any Contact. So the Contact Id is not available. Is there a way to save a record of the outgoing email on the Case (WhatId)?
    – Bryan
    Jun 18 '18 at 13:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.