web-dev-qa-db-ja.com

PHPでOutlookカレンダーの会議出席依頼を作成する方法

誰かが私を正しい方向に向けることができますか?私はそれが.icsファイルの添付に関係していることを知っていますが、ユーザーがOutlookの予定表にイベントをダウンロードしてインポートできるようになるまでしか取得できません。これらの会議出席依頼をプログラムで作成するにはどうすればよいですか?

14
blacktie24

以下は、複数の参加者を使用した作業例です。

<?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);    
?>

オプションを追加/削除する必要がある場合、ここにVCALENDARのリファレンスがあります。 WikipediaのVCALENDAR

23
Artur Kędzior

プログラムで.icsを生成できます。

方法は次のとおりです。

<?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;
?>
6
paulsm4