Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create an outlook calendar meeting request in PHP?

Can someone point me in the right direction? I know it has to do with attaching a .ics file, but I can only get it to the point where a user can download and then import the event into their outlook calendar? How can I programmatically create these meeting requests?

like image 382
blacktie24 Avatar asked Oct 08 '12 06:10

blacktie24


People also ask

How do I add an event in Outlook calendar using PHP?

One is to use WEBDAV to add event from php to exchange server and then sync it with outlook. Second weird option is to upload the generated ics file to the Outlook calendar events folder in the pc.


1 Answers

Here is working example with multiple participants:

<?php

    $to = '[email protected],[email protected]';
    $subject = "Millennium Falcon";

    $organizer          = 'Darth Vader';
    $organizer_email    = '[email protected]';

    $participant_name_1 = 'Boushh';
    $participant_email_1= '[email protected]';

    $participant_name_2 = 'Boba Fett';
    $participant_email_2= '[email protected]';  

    $location           = "Stardestroyer-013";
    $date               = '20131026';
    $startTime          = '0800';
    $endTime            = '0900';
    $subject            = 'Millennium Falcon';
    $desc               = 'The purpose of the meeting is to discuss the capture of Millennium Falcon and its crew.';

    $headers = 'Content-Type:text/calendar; Content-Disposition: inline; charset=utf-8;\r\n';
    $headers .= "Content-Type: text/plain;charset=\"utf-8\"\r\n"; #EDIT: TYPO

    $message = "BEGIN:VCALENDAR\r\n
    VERSION:2.0\r\n
    PRODID:-//Deathstar-mailer//theforce/NONSGML v1.0//EN\r\n
    METHOD:REQUEST\r\n
    BEGIN:VEVENT\r\n
    UID:" . md5(uniqid(mt_rand(), true)) . "example.com\r\n
    DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z\r\n
    DTSTART:".$date."T".$startTime."00Z\r\n
    DTEND:".$date."T".$endTime."00Z\r\n
    SUMMARY:".$subject."\r\n
    ORGANIZER;CN=".$organizer.":mailto:".$organizer_email."\r\n
    LOCATION:".$location."\r\n
    DESCRIPTION:".$desc."\r\n
    ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN".$participant_name_1.";X-NUM-GUESTS=0:MAILTO:".$participant_email_1."\r\n
    ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN".$participant_name_2.";X-NUM-GUESTS=0:MAILTO:".$participant_email_2."\r\n
    END:VEVENT\r\n
    END:VCALENDAR\r\n";

    $headers .= $message;
    mail($to, $subject, $message, $headers);    
?>

If you need to add/remove options here is a reference of VCALENDAR: VCALENDAR on Wikipedia

like image 110
Artur Kędzior Avatar answered Oct 06 '22 03:10

Artur Kędzior