php events outlook icalendar

Agregar eventos al calendario de Outlook con script php



events icalendar (6)

Quiero agregar eventos a mi calendario de Outlook desde el código php. Como Outlook puede aceptar un archivo de extensión ".ics", he intentado este código de muestra para generar un archivo 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"; ?>

Así que ahora cuando ejecuto este código en Firefox, recibí una ventana emergente solicitando abrir el archivo ics generado usando Microsoft Outlook y lo abrí y guardé en Outlook y finalmente se agregó un evento en Outlook.

Pero, ¿hay alguna manera de automatizar este proceso? Quiero decir, ¿puedo almacenar el evento en el calendario de Outlook directamente desde un script php, sin necesidad de generar un archivo ics y guardarlo?


¿Cómo su aplicación de servidor debería poder acceder a una aplicación cliente? Puede enviar un correo electrónico a su cliente con una entrada de calendario. Tal vez esto sea un poco más cómodo para su usuario.


No puedes.

PHP es un lenguaje de scripting para crear (principalmente) páginas web, y se ejecuta en servidores web. No puede modificar las computadoras de los usuarios.

Por cierto, no creo que puedas, de ninguna manera, insertar un evento en el calendario de un usuario sin algún tipo de interacción del usuario. Además de los motivos técnicos, se trata de un problema de seguridad, no se puede jugar con las computadoras de otras personas.


<?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:[email protected] 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"; } ?>


Si aún no lo ha implementado, CalDAV (http://caldav.calconnect.org/) proporciona extensiones de calendario para WebDAV, si necesita agregar esta funcionalidad a su sitio. DAViCAL (http://www.davical.org/) parece ofrecer una solución a su problema, pero no lo he usado así que YMMV en él.


Jugué con esto y Outlook lo agregará automáticamente al calendario si lo envía como un correo electrónico y la dirección de correo electrónico es la misma que la configuración de la cuenta en Outlook. Tan pronto como Outlook descarga el mensaje, lo agrega automáticamente al calendario.


Hice esto con PHP, básicamente creando un evento ical inline en un archivo php separado que no requiere ninguna biblioteca adicional para aquellos de ustedes que todavía quieren hacerlo. Evento Outlook / iCal con PHP

Básicamente, me gustó esto

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";