-
-
Save douglascayers/ada5a2a1708099f6ed7e to your computer and use it in GitHub Desktop.
<!-- | |
Simple proof-of-concept to create a .ics calendar event with visualforce. | |
Inspired by Natalie Regier @gnatrae | |
This example uses url parameters to set the details of event. | |
You could create a custom button that invokes this page, like: | |
https://<your-salesforce-domain>/apex/vCalendarPage?start={!TEXT(Obj.StartDate__c)}&end={!TEXT(Obj.EndDate__c)}&subject=Event from Visualforce&description=This .ics event created with visualforce&location=The Cloud | |
An example with literal values you can copy & paste in your browser: | |
https://<your-salesforce-domain>/apex/vCalendarPage?start=20140524T140000&end=20140524T153000&subject=Event from Visualforce&description=This .ics event created with visualforce&location=The Cloud | |
--> | |
<apex:page title="event.ics" contentType="text/calendar" cache="false"> | |
BEGIN:VCALENDAR | |
VERSION:2.0 | |
PRODID::-//hacksw/handcal//NONSGML v1.0//EN | |
BEGIN:VEVENT | |
DTSTAMP;TZID=GMT:<apex:outputText value="{!SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($CurrentPage.parameters.start,':',''),'-',''),' ','T')}"/> | |
UID:<apex:outputText value="{!SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($CurrentPage.parameters.start,':',''),'-',''),' ','')}"/>[email protected] | |
DTSTART;TZID=GMT:<apex:outputText value="{!SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($CurrentPage.parameters.start,':',''),'-',''),' ','T')}"/> | |
DTEND;TZID=GMT:<apex:outputText value="{!SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($CurrentPage.parameters.end,':',''),'-',''),' ','T')}"/> | |
SUMMARY:<apex:outputText value="{!$CurrentPage.parameters.subject}"/> | |
DESCRIPTION:<apex:outputText value="{!$CurrentPage.parameters.description}"/> | |
LOCATION:<apex:outputText value="{!$CurrentPage.parameters.location}"/> | |
END:VEVENT | |
END:VCALENDAR | |
</apex:page> |
Hi Douglas, great post.
Maybe you could help me a little bit.
I'm sending from an Apex class an Messaging.SingleEmailMessage, and I need to attach an ICS file.
I already have created your page.
I have this piece of code.
Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
email.setToAddresses(addresses);
email.setSubject(text);
email.setPlainTextBody(text);
email.setFileAttachments(.........)
So my question is, how do I attach your page to my email???
Should I set the PageReference on email.setFileAttachments(.........)????
Thank you very much
Avelino, I think this is addressed in the link above provided by Douglas. https://douglascayers.com/2015/01/09/salesforce-send-calendar-invites-in-visualforce-email-templates/
In the solution section on the referenced link it says:
"Configure the email template like normal (subject, recipient, relatedTo, body) then at the bottom add <messaging:attachment filename=”reminder.ics”> and closing tag </messaging:attachment>. Between the two attachment tags, include the iCal markup to define your event as shown in this gist. "
Thanks for this code.
When i am sending this invite to GMAIL, on mobile app, i am unable to see the description in calendar.
you can check, and let me know, if it is working for you.
many thanks,
Himanshu
Thank you for the above!
I am also experiencing the same issue as new84js, in regards to the body of the event(description) is being dropped. I've tried tweaking it and was able to get the body to show the expected values but the formatting was dropped. It displays in html and I can't seem to get passed that.
If you or anyone has any thoughts or tips I'd appreciate it!
Thanks
Check out my new blog post for a solution that does not require Visualforce or attachments, https://douglascayers.com/2019/06/22/how-to-send-google-and-outlook-calendar-invite-links-in-email-templates/
@douglascayers Following up on this, it appears that the link that you posted above is broken. Do you happen to have that article somewhere? I'm very interested in learning how you did it.
@douglascayers Can we provide the latest link as existing link is not working.
For example of embedding an .ics attachment within visualforce email, please see this gist https://gist.github.com/DouglasCAyers/247f895a1e4324505c65 and blog post https://douglascayers.wordpress.com/2015/01/09/salesforce-send-calendar-invites-in-visualforce-email-templates/