I need to submit an Outlook Calendar event with attached .ics-file from my PHP application. After i searched for several hours i found a very hugh number of ways which are not working at the same time for the iPhone (using .ics), Thunderbird (using Lightning plugin) and for (Exchange-) Outlook. Also this are so few lines of code.
For everybody with the same problem ( and for myself for the next application ), here is the outcoming method (not too well documented but by playing with the parameters you’ll get it very fast):
/** * sends an iCal event mail * @param Timestamp $tsStart - timestart of the start time * @param Timestamp $tsEnd - timestamp of end date * @param String $location - location of event * @param String $summary - event summary * @param String $to - list of email recipients * @param String $subject - email subject */ private function sendCalEntry( $tsStart, $tsEnd, $location, $summary, $title, $resources, $to, $subject ){ $from = ORGANISATIONREPLYMAIL; $dtstart = date('Ymd',$tsStart).'T'.date('His',$tsStart); $dtend = date('Ymd',$tsEnd).'T'.date('His',$tsEnd); $loc = $location; $vcal = "BEGIN:VCALENDAR\r\n"; $vcal .= "VERSION:2.0\r\n"; $vcal .= "PRODID:-//nonstatics.com//OrgCalendarWebTool//EN\r\n"; $vcal .= "METHOD:REQUEST\r\n"; $vcal .= "BEGIN:VEVENT\r\n"; $vcal .= "ORGANIZER;CN=\"".ORGANISATIONNAME." (".$_SESSION['username'].")"."\":mailto:".ORGANISATIONREPLYMAIL."\r\n"; $vcal .= "UID:".date('Ymd').'T'.date('His')."-".rand()."-nonstatics.com\r\n"; $vcal .= "DTSTAMP:".date('Ymd').'T'.date('His')."\r\n"; $vcal .= "DTSTART:$dtstart\r\n"; $vcal .= "DTEND:$dtend\r\n"; $vcal .= "LOCATION:$location\r\n"; $vcal .= "SUMMARY:$summary\r\n"; $vcal .= "DESCRIPTION:Hinweis/Fahrer:$summary - Folgende Resourcen wurden gebucht: $resources \r\n"; $vcal .= "BEGIN:VALARM\r\n"; $vcal .= "TRIGGER:-PT15M\r\n"; $vcal .= "ACTION:DISPLAY\r\n"; $vcal .= "DESCRIPTION:Reminder\r\n"; $vcal .= "END:VALARM\r\n"; $vcal .= "END:VEVENT\r\n"; $vcal .= "END:VCALENDAR\r\n"; $headers = "From: $from\r\nReply-To: $from"; $headers .= "\r\nMIME-version: 1.0\r\nContent-Type: text/calendar; name=calendar.ics; method=REQUEST; charset=\"iso-8859-1\""; $headers .= "\r\nContent-Transfer-Encoding: 7bit\r\nX-Mailer: Microsoft Office Outlook 12.0"; return @mail($to, $subject . " " . $summary . " / " . $resources, $vcal, $headers); } |
cheers.
Sebastian
Thanks dude.. Its working fine for us.
I glad to use this code to send invitations. Nice work.
This is the only post that helped me to get my task done completely. Good job
This is very helpfull function, thanks
Awesome… Done exactly what was needed.. I browsed thru many posts but this one was the only working solution.
i am new to the PHP and i used same code to send an outlook MR but i am not getting any MR into my inbox.
I just copy your code and deployed into xampp server. we have to do any other settings?
Regards,
Harish
Nice work…however. Outlook reminder (snooze, etc), needs to be set to work. Mine is turned off. Any suggestions?
Can we update, delete the added event.fy the added event
hi, i didnt get this can please explain me
$from = ORGANISATIONREPLYMAIL;
$dtstart = date(‚Ymd‘,$tsStart).’T‘.date(‚His‘,$tsStart);
$dtend = date(‚Ymd‘,$tsEnd).’T‘.date(‚His‘,$tsEnd);
$loc = $location;
$vcal = „BEGIN:VCALENDAR\r\n“;
$vcal .= „VERSION:2.0\r\n“;
$vcal .= „PRODID:-//nonstatics.com//OrgCalendarWebTool//EN\r\n“;
$vcal .= „METHOD:REQUEST\r\n“;
$vcal .= „BEGIN:VEVENT\r\n“;
$vcal .= „ORGANIZER;CN=\““.ORGANISATIONNAME.“ („.$_SESSION[‚username‘].“)“.“\“:mailto:“.ORGANISATIONREPLYMAIL.“\r\n“;
$vcal .= „UID:“.date(‚Ymd‘).’T‘.date(‚His‘).“-„.rand().“-nonstatics.com\r\n“;
Hi ,
im getting soln please help me out to solve it