web-dev-qa-db-fra.com

Comment créer une demande de réunion de calendrier Outlook en PHP?

Quelqu'un peut me diriger dans la bonne direction? Je sais que cela a à voir avec la fixation d'un fichier .ics, mais je ne peux que le faire au point où un utilisateur peut télécharger, puis importer l'événement dans leur calendrier Outlook? Comment créer par programme ces demandes de réunion?

14
blacktie24

Voici un exemple de travail avec plusieurs 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);    
?>

Si vous devez ajouter/supprimer des options ici, une référence de VCalendar: Vcalendar sur Wikipedia

23
Artur Kędzior