Моя ситуация: встречи хранятся во внешней CMS. Я хочу отправить встречи (через PHP / PHPMailer) на почтовый клиент конечного пользователя (Outlook). Пользователь (организатор) должен иметь возможность отправлять встречи самому себе и другим участникам, в то время как он (организатор) должен получать все ответы от участников.
Я могу отправить встречу всем пользователям (организатору и участникам), но если посетитель отвечает на встречу, организатор получит уведомление, но оно не будет отображаться в записи календаря организаторов. Он даже не видит систему «Отслеживание», чтобы посмотреть, кто принял или отклонил приглашение.
Трудно описать, но, надеюсь, моя проблема прояснена.
Вот мои настройки:
$mail = new \PHPMailer();
$mail->isSMTP();
$mail->isHTML(false);
// Settings...
$mail->ContentType = 'text/calendar';
$mail->addCustomHeader('MIME-version',"1.0");
$mail->addCustomHeader('Content-type',"text/calendar; method=REQUEST; charset=UTF-8");
$mail->addCustomHeader('Content-Transfer-Encoding',"7bit");
$mail->addCustomHeader('X-Mailer',"Microsoft Office Outlook 12.0");
$mail->addCustomHeader("Content-class: urn:content-classes:calendarmessage");
$mail->AddAddress('[email protected]');
$mail->AddAddress('[email protected]');
// Event data
$summary = 'Test event';
$location = 'Room 001';
$start = '20180310';
$start_time = '160000';
$end = '20180310';
$end_time = '163000';
$event_id = 123456;
$sequence = 0;
$status = 'CONFIRMED';
$mail->Subject = $summary";
$ical = "BEGIN:VCALENDAR\r\n";
$ical .= "VERSION:2.0\r\n";
$ical .= "PRODID:-//Company//Anything//DE\r\n";
$ical .= "METHOD:REQUEST\r\n";
$ical .= "BEGIN:VEVENT\r\n";
$ical .= ORGANIZER;CN=\"Organizer\":MAILTO:[email protected]\r\n";
$ical .= "ATTENDEE;CN=\"Anybody\";ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:MAILTO:[email protected]\r\n";
$ical .= "UID:" . strtoupper(md5($event_id)) . "-example.com\r\n";
$ical .= "SEQUENCE:" . $sequence . "\r\n";
$ical .= "STATUS:" . $status . "\r\n";
$ical .= "DTSTAMPTZID=Europe/Berlin:" . date('Ymd') . 'T' . date('His') . "\r\n";
$ical .= "DTSTART:" . $start . "T" . $start_time . "\r\n";
$ical .= "DTEND:" . $end . "T" . $end_time . "\r\n";
$ical .= "LOCATION:" . $location . "\r\n";
$ical .= "SUMMARY:" . $summary . "\r\n";
$ical .= "DESCRIPTION:AnyText\r\n";
$ical .= "BEGIN:VALARM\r\n";
$ical .= "TRIGGER:-PT15M\r\n";
$ical .= "ACTION:DISPLAY\r\n";
$ical .= "DESCRIPTION:Reminder\r\n";
$ical .= "END:VALARM\r\n";
$ical .= "END:VEVENT\r\n";
$ical .= "END:VCALENDAR\r\n";
// Send mail via PHPMailer...
Любые предложения, как поместить событие в календарь организатора (из внешнего приложения), который затем сможет получать ответы от участников?
Во-первых, я бы рекомендовал использовать класс строителя вместо того, чтобы катать свой собственный вручную таким образом.
PHPMailer имеет некоторые встроенная поддержка iCal это облегчает:
$ical = "your ical data in here, generated however you like";
$mail->Ical = $ical;
Имейте в виду, что поддержка iCal в клиентах чрезвычайно разнообразна; трудно сделать элементы iCal, которые работают в gmail и Outlook одновременно.
Других решений пока нет …