2011-05-13 51 views
6

Quiero agregar eventos a mi calendario de Outlook desde el código php. Como perspectiva puede aceptar un archivo de extensión ".ics", he tratado de este código de ejemplo para generar un archivo ICS:Agregar eventos al calendario de Outlook con script php

<?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:201T230000\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 corro este código en Firefox, tengo una ventana emergente preguntando a abra el archivo ics generado utilizando 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?

+1

Eres consciente añadiendo un enlace fuera de tema al igual que a su pregunta es el spam? – Albireo

+0

Oh ... Albiero, lo siento ... voy a eliminar ese enlace. Pensé mencionar ese enlace para echar un vistazo a mi situación actual. –

Respuesta

3

¿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.

+0

¿Puedo agregar eventos al servidor de intercambio mediante WEBDAV y luego sincronizar el servidor de intercambio con las perspectivas del usuario? –

+0

@dskanth Sry, esa pregunta no puedo responder. – DanielB

-3

No puede.

PHP es un lenguaje de scripts 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 pueda, 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.

+0

Siento que aún hay 2 opciones. Una es usar WEBDAV para agregar eventos desde php al servidor de intercambio y luego sincronizarlos con Outlook. La segunda opción más extraña es subir el archivo ics generado a la carpeta de eventos del calendario de Outlook en la pc. Pero eso es raro Entonces mirando la primera opción. –

5
<?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"; 
} 

?> 
+1

Esto no funcionará en Outlook ... –

4

Si no ha implementado todavía, CalDAV (http://caldav.calconnect.org/) proporciona extensiones de calendario a WebDAV, si es necesario 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.

3

He jugado 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.

+0

Esto puede ser difícil con algunos servidores que validan la dirección from. p.ej. Si intento enviar un correo electrónico con mi cuenta de [email protected] usando "[email protected]", Gmail se rehusará a enviar porque cree que estoy tratando de falsificar un correo electrónico. Lo ideal sería que necesites las credenciales smtp del usuario para poder enviar el correo electrónico desde su cuenta. – Cerin

2

Hice esto con PHP, básicamente creando un evento ical inline en un archivo php separado que no requiere bibliotecas adicionales para aquellos de ustedes que quieran hacerlo. Outlook/iCal event with PHP

Básicamente hice así

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