You need to sign in to do that
Don't have an account?
Todd B.
Trying to Send an Email based on an Event
Since you can not use workflows to send an email update on a Event, I am working on creating a trigger that will send email. I created an email template called MCC_Close_Event_Email and based it on the Event object. I tested it and made sure it pulls all the correct info when sending.
Then I created the trigger below to send the email when a cretain field is checked.
Any ideas to ensure the Event related fields in the Email are populated?
Then I created the trigger below to send the email when a cretain field is checked.
trigger EventSendEmailMCCReminder on Event (After Update, After Insert) { /* Event e1 = trigger.new[0]; */ For (Event e1 : trigger.New){ String[] toAddresses = new String[] {e1.owner.email}; String[] strProfile = New String[] {e1.owner.profile.name}; Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setTargetObjectId(e1.OwnerID); mail.setSenderDisplayName('Salesforce Admin'); mail.setUseSignature(false); mail.setBccSender(false); mail.setSaveAsActivity(false); System.debug('Profile Name ' + e1.owner.profile.name); System.debug('Owner Name ' + e1.owner.name); System.debug('Profile Name ' + strProfile); System.debug('To Address ' + toAddresses); If(e1.SendMCCRemiderEmail__c == True ){ /* If(e1.owner.profile.name == 'System Administrator'){ */ EmailTemplate et=[Select id from EmailTemplate where DeveloperName=:'MCC_Close_Event_Email']; mail.setTemplateId(et.id); Messaging.SendEmailResult [] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail}); } } }My issue is, it send the email, but all the Event related fields in the email are blank. Also, all me System.Debug values are blank in the debug log.
Any ideas to ensure the Event related fields in the Email are populated?
After reviewing what you said, I added one line of code to my trigger: and now everything works fine, including using an email template.
I ported eveything over to a class and the final code looks like this:
Now, I have a time based workflow, check a box on the Event record, then a trigger, on the event record, calls the class once the aforementioned box is check.
A nice, simple, salesforce.com solution...NOT! But at least it works.
All Answers
I also tried out a similar situation wherein I tested an email trigger on an Event update.
The values from the event fields are not getting populated in the mail because the WhatId is not mentioned for the email being sent. Therefore the system does not know which Event record to use for merging fields.
Now, when you provide the WhatId using setWhatId(param1) it errors out stating that cannot use WhatId when using UserIds.
So the other way to achieve the desired results is to NOT use the email templates.
Instead build the body and subject of the message within the trigger using setToAddresses(List<String>), setSubject(String) and setHtmlBody(String).
I tried out using this option and was able to pull information from the event and place it in the email successfully.
Let me know if you need any further assistance.
Thanks
AR
If your problem resolves by this reply then please mark it as best answer.
After reviewing what you said, I added one line of code to my trigger: and now everything works fine, including using an email template.
I ported eveything over to a class and the final code looks like this:
Now, I have a time based workflow, check a box on the Event record, then a trigger, on the event record, calls the class once the aforementioned box is check.
A nice, simple, salesforce.com solution...NOT! But at least it works.