如何使用DDay.iCal创建Outlook"约会"?

Hop*_*ppe 8 c# asp.net icalendar dday

我正在使用DDay库来创建iCal事件,以便我的网站用户可以在他们的日历中添加内容.

我希望他们在Office 2010中添加约会而不是会议请求(希望其他人也是如此).当我使用库并将方法设置为PUBLISH时,它确实显示为约会,但它报告在日历中找不到会议.然后,当我点击不需要回复时,该项目将被删除,并且不会保留在他们的日历中.

如果我将方法更改为REQUEST,它将显示为会议请求.这可能是第二好的选择,但'to'字段是空白的.如果这是我能做的最好的,我怎样才能设置'到'字段?我想我会让他们回应自己.

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);
}
Run Code Online (Sandbox Code Playgroud)

Hop*_*ppe 3

当我将组织者设置为电子邮件地址(而不是测试字符串)时,效果很好。我已经写了所有这些,所以我想我会分享它,以防其他人遇到同样的问题