如何在 PHP 中创建 Outlook 日历会议请求?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/12776088/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to create an outlook calendar meeting request in PHP?
提问by blacktie24
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?
有人可以指出我正确的方向吗?我知道这与附加 .ics 文件有关,但我只能将其设置到用户可以下载然后将事件导入他们的 Outlook 日历的程度?如何以编程方式创建这些会议请求?
回答by Artur K?dzior
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
如果您需要添加/删除选项,这里是 VCALENDAR 的参考:维基百科上的 VCALENDAR
回答by paulsm4
You can programmatically generate an .ics :)
您可以以编程方式生成 .ics :)
Here's how:
就是这样:
<?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;
?>

