How to create an outlook calendar meeting request in PHP?

前端 未结 2 1877
自闭症患者
自闭症患者 2020-12-12 22:49

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 th

相关标签:
2条回答
  • 2020-12-12 23:43

    Here is working example with multiple participants:

    <?php
    
        $to = 'boushh@arturito.net,bobafett@arturito.net';
        $subject = "Millennium Falcon";
    
        $organizer          = 'Darth Vader';
        $organizer_email    = 'darthvader@arturito.net';
    
        $participant_name_1 = 'Boushh';
        $participant_email_1= 'boushh@arturito.net';
    
        $participant_name_2 = 'Boba Fett';
        $participant_email_2= 'bobafett@arturito.net';  
    
        $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

    0 讨论(0)
  • 2020-12-12 23:48

    You can programmatically generate an .ics :)

    Here's how:

    • Adding Events to Microsoft Outlook from PHP using ICAL
    <?php
        $date      = $_GET['date'];
        $startTime = $_GET['startTime'];
        $endTime   = $_GET['endTime'];
        $subject   = $_GET['subject'];
        $desc      = $_GET['desc'];
    
        $ical = "BEGIN:VCALENDAR
        VERSION:2.0
        PRODID:-//hacksw/handcal//NONSGML v1.0//EN
        BEGIN:VEVENT
        UID:" . md5(uniqid(mt_rand(), true)) . "example.com
        DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
        DTSTART:".$date."T".$startTime."00Z
        DTEND:".$date."T".$endTime."00Z
        SUMMARY:".$subject."
        DESCRIPTION:".$desc."
        END:VEVENT
        END:VCALENDAR";
    
        //set correct content-type-header
        header('Content-type: text/calendar; charset=utf-8');
        header('Content-Disposition: inline; filename=calendar.ics');
        echo $ical;
        exit;
    ?>
    
    0 讨论(0)
提交回复
热议问题