Я хочу добавить события в свой календарь Outlook из PHP-кода. Поскольку Outlook может принять файл расширения «.ics», я попробовал этот образец кода для создания файла ics:
<?php header("Content-Type: text/Calendar"); header("Content-Disposition: inline; filename=calendar.ics"); echo "BEGIN:VCALENDAR\n"; echo "VERSION:2.0\n"; echo "PRODID:www.testMeiCalendar.net\n"; echo "METHOD:REQUEST\n"; // requied by Outlook echo "BEGIN:VEVENT\n"; echo "DTSTART:20101231T230000\n"; echo "DTEND:20110101T010000\n"; echo "SUMMARY:New Years Eve Reminder\n"; echo "LOCATION:Downtown\n"; echo "DESCRIPTION:Let's get together for New Years Eve\n"; echo "UID:ABCD1234\n"; echo "SEQUENCE:0\n"; echo "DTSTAMP:20101125T112600\n"; echo "END:VEVENT\n"; echo "END:VCALENDAR\n"; ?>
Итак, теперь, когда я запускаю этот код в Firefox, у меня появилось всплывающее окно с просьбой открыть сгенерированный файл ics с помощью Microsoft Outlook, и я открыл его и сохранил его в Outlook, и, наконец, событие добавлено в Outlook.
Но есть ли способ автоматизировать этот процесс? Я имею в виду, могу ли я сохранить событие в календаре Outlook непосредственно из php-скрипта, не создавая файл ics и сохраняя его?
Как ваше серверное приложение должно иметь доступ к клиентскому приложению? Вы можете отправить электронное письмо своему клиенту с записью календаря. Возможно, это немного более удобно для вашего пользователя.
<?php /** * @category iCalendar * @description Basic code for sending an event invitation. * @version 1.0 */ //Create ICAL Content (Google rfc 2445 for details and examples of usage) //reference : http://www.mavetju.org/programming/outlook-ics.php $message="BEGIN:VCALENDAR VERSION:2.0 CALSCALE:GREGORIAN METHOD:REQUEST BEGIN:VEVENT DTSTART:20110718T121000Z DTEND:20110718T131000Z DTSTAMP:20110525T075116Z ORGANIZER;CN=From Name:mailto:from email id UID:12345678 ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Sample:mailto:sample@test.com DESCRIPTION:This is a test of iCalendar event invitation. LOCATION: Kochi SEQUENCE:0 STATUS:CONFIRMED SUMMARY:Test iCalendar TRANSP:OPAQUE END:VEVENT END:VCALENDAR"; /*Setting the header part, this is important */ $headers = "From: From Name <From Mail>\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: text/calendar; method=REQUEST;\n"; $headers .= ' charset="UTF-8"'; $headers .= "\n"; $headers .= "Content-Transfer-Encoding: 7bit"; /*mail content , attaching the ics detail in the mail as content*/ $subject = "Meeting Subject"; $subject = html_entity_decode($subject, ENT_QUOTES, 'UTF-8'); /*mail send*/ if(mail("To email", $subject, $message, $headers)) { echo "sent"; }else { echo "error"; } ?>
Если вы еще не реализовали его, CalDAV (http://caldav.calconnect.org/) предоставляет расширения для календаря для WebDAV, если вам нужно добавить эту функциональность на свой сайт. DAViCAL (http://www.davical.org/), как представляется, предлагает решение вашей проблемы, но я не использовал его, поэтому YMMV на нем.
Я играл с этим, и Outlook автоматически добавит его в календарь, если вы отправите его как электронное письмо, а адрес от него – тот же адрес электронной почты, что и настройка учетной записи в Outlook. Как только Outlook загрузит это сообщение, он автоматически добавит его в календарь.
Я сделал это с помощью PHP, в основном создавая однотипное событие inline в отдельном php-файле, который не требует дополнительных библиотек для тех из вас, которые все еще там хотят сделать это. Событие Outlook / iCal с PHP
В основном это понравилось
echo "BEGIN:VCALENDAR\n"; echo "VERSION:2.0\n"; echo "PRODID:-//YourSite//NONSGML YourSite//EN\n"; echo "METHOD:PUBLISH\n"; // required by Outlook echo "BEGIN:VEVENT\n"; echo "UID:".date('Ymd').'T'.date('His')."-".rand()."-yoursite.com\n"; // required by Outlook echo "DTSTAMP:".date('Ymd').'T'.date('His')."\n"; // required by Outlook echo "DTSTART:$year"."$month"."$day"."T"."$time\n"; //20120824T093200 (Datetime format required) echo "SUMMARY:$summary\n"; echo "DESCRIPTION: this is just a test\n"; echo "END:VEVENT\n"; echo "END:VCALENDAR\n";
Вы не можете.
PHP – это язык сценариев для создания (в первую очередь) веб-страниц и работает на веб-серверах. Он не может изменять компьютеры пользователей.
Кстати, я не думаю, что вы можете – каким-либо образом – вставить событие в календарь пользователя без какого-либо взаимодействия с пользователем. Помимо технических причин, это проблема безопасности, вы не можете обойтись с ПК других людей.