2012-08-24 12 views
8

Estoy usando la biblioteca DDay para crear un evento iCal, para que los usuarios de mi sitio puedan agregar algo a su calendario.¿Cómo creo una "cita" de Outlook con DDay.iCal?

Quiero que agreguen una cita en lugar de una convocatoria de reunión en Office 2010 (y espero que otros también). Cuando uso la biblioteca y establezco el método para PUBLICAR, aparece como una cita, pero informa que la reunión no se puede encontrar en el calendario. Luego, cuando hago clic en No se requiere respuesta, el elemento se elimina y no permanece en su calendario.

Si cambio el método a SOLICITUD, se muestra como una convocatoria de reunión. Esta sería una segunda mejor opción, pero el campo 'para' está en blanco. Si eso es lo mejor que puedo hacer, ¿cómo puedo configurar el campo "para"? Supongo que les pediría que respondan a sí mismos.

private static string CreateCalendarEvent(
    string title, string body, DateTime startDate, double duration, 
    string location, string organizer, string eventId, bool allDayEvent) 
{ 
    // mandatory for outlook 2007 
    if(String.IsNullOrEmpty(organizer)) 
     throw new Exception("Organizer provided was null"); 

    var iCal = new iCalendar 
    { 
     Method = "PUBLISH", 
     Version = "2.0" 
    }; 

    // "REQUEST" will update an existing event with the same UID (Unique ID) and a newer time stamp. 
    //if (updatePreviousEvent) 
    //{ 
    // iCal.Method = "REQUEST"; 
    //} 

    var evt = iCal.Create<Event>(); 
    evt.Summary = title; 
    evt.Start = new iCalDateTime(startDate); 
    evt.Duration = TimeSpan.FromHours(duration); 
    evt.Description = body; 
    evt.Location = location; 
    evt.IsAllDay = allDayEvent; 
    evt.UID = String.IsNullOrEmpty(eventId) ? new Guid().ToString() : eventId; 
    evt.Organizer = new Organizer(organizer); 
    evt.Alarms.Add(new Alarm 
    { 
     Duration = new TimeSpan(0, 15, 0), 
     Trigger = new Trigger(new TimeSpan(0, 15, 0)), 
     Action = AlarmAction.Display, 
     Description = "Reminder" 
    }); 

    return new iCalendarSerializer().SerializeToString(iCal); 
} 

Respuesta

3

Cuando configuré el organizador en una dirección de correo electrónico, a diferencia de una cadena de prueba, funcionó bien. Había escrito todo esto, así que pensé en compartirlo en caso de que alguien más tuviese el mismo problema

+0

Tenga en cuenta que no aparece el correo electrónico se utiliza realmente para nada, si más adelante entrar y actualizar esto como una solicitud de reunión. –

1

Mi aplicación dejó de funcionar cuando el servidor de intercambio se actualizó a Outlook 2010 desde 2003. Antes de la actualización, PUBLISH funcionaba bien pero ahora tenía que cambiar a sOLICITUD

Gracias por el artículo

Cuestiones relacionadas