2012-08-24 9 views
8

Ich verwende die DDay-Bibliothek, um ein iCal-Ereignis zu erstellen, damit Benutzer meiner Website ihrem Kalender etwas hinzufügen können.Wie erstelle ich einen Outlook "Termin" mit DDay.iCal?

Ich möchte sie einen Termin im Gegensatz zu einer Besprechungsanfrage in Office 2010 hinzufügen (und hoffentlich auch andere). Wenn ich die Bibliothek verwende und die Methode auf PUBLIZIEREN einstelle, wird sie zwar als Termin angezeigt, meldet jedoch, dass das Meeting nicht im Kalender gefunden werden kann. Wenn ich dann auf "Keine Antwort erforderlich" klicke, wird das Element gelöscht und verbleibt nicht im Kalender.

Wenn ich die Methode in REQUEST ändern, wird es als eine Besprechungsanfrage angezeigt. Dies wäre eine okay zweitbeste Option, aber das Feld 'to' ist leer. Wenn das das Beste ist, was ich tun kann, wie kann ich das Feld "An" einstellen? Ich denke, ich würde sie auf sich selbst reagieren lassen.

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

Antwort

3

Wenn ich den Organisator auf eine E-Mail-Adresse setzte, im Gegensatz zu einer Testzeichenfolge, funktionierte es gut. Ich hatte all dies auf, geschrieben, so dachte ich, ich es für den Fall, jemand teilen würde sonst das gleiche Problem hatte

+0

Hinweis auf REQUEST zu ändern, dass es nicht die E-Mail scheint tatsächlich für alles verwendet wird, wenn Sie später gehen und aktualisieren diese als Besprechungsanfrage. –

1

Meine app funktioniert nicht mehr, wenn der Exchange-Server auf Outlook 2010 von 2003 aktualisiert wurde vor dem Upgrade hat gut funktioniert PUBLIZIEREN aber jetzt hatte ich

Danke für den Artikel

Verwandte Themen