2012-08-24 18 views
8

Sto utilizzando la libreria DDay per creare un evento iCal, in modo che gli utenti del mio sito possano aggiungere qualcosa al loro calendario.Come posso creare un "appuntamento" di Outlook con DDay.iCal?

Desidero che aggiungano un appuntamento anziché una richiesta di riunione in Office 2010 (e si spera che anche altri). Quando uso la libreria e imposta il metodo su PUBLISH, appare come un appuntamento, ma segnala che la riunione non può essere trovata nel calendario. Quindi quando faccio clic su Nessuna risposta richiesta, l'elemento viene eliminato e non rimane nel loro calendario.

Se cambio il metodo in RICHIESTA, viene visualizzato come richiesta di riunione. Questa sarebbe la seconda opzione migliore, ma il campo 'a' è vuoto. Se è il meglio che posso fare, come posso impostare il campo "a"? Immagino che li farei rispondere a loro stessi.

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); 
} 

risposta

3

Quando ho impostato l'organizzatore su un indirizzo e-mail, al contrario di una stringa di test, ha funzionato correttamente. Ho scritto tutto questo, quindi ho pensato di condividerlo nel caso in cui qualcun altro avesse lo stesso problema

+0

si noti che non viene visualizzato il messaggio viene effettivamente utilizzato per qualsiasi cosa, se in seguito andare in e aggiornare questo come una richiesta di riunione. –

1

La mia app ha smesso di funzionare quando il server Exchange è stato aggiornato a Outlook 2010 dal 2003. Prima dell'upgrade, PUBLISH ha funzionato correttamente ma ora ho dovuto cambiare a rICHIESTA

Grazie per l'articolo

Problemi correlati