Может ли кто-нибудь указать мне в правильном направлении? Я знаю, что это связано с прикреплением файла .ics, но я могу только довести его до такой степени, что пользователь может загрузить и затем импортировать событие в свой календарь перспективы? Как я могу программно создавать эти запросы на собрания?
Вот пример работы с несколькими участниками:
<?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); ?>
Здесь я опубликовал изображения того, как это будет выглядеть в Outlook и GMail: Примеры
Если вам нужно добавить / удалить опции, вот ссылка VCALENDAR: VCALENDAR в Википедии
Вы можете программно генерировать .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; ?>
время<?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; ?>
=<?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; ?>