8

DDay ライブラリを使用して iCal イベントを作成し、サイトのユーザーが自分のカレンダーに何かを追加できるようにしています。

Office 2010 での会議出席依頼ではなく、予定を追加してもらいたい (他のユーザーもできれば)。ライブラリを使用してメソッドを PUBLISH に設定すると、予定として表示されますが、会議がカレンダーに見つからないと報告されます。次に、[応答不要] をクリックすると、アイテムが削除され、カレンダーに残りません。

メソッドを REQUEST に変更すると、会議出席依頼として表示されます。これは 2 番目に良いオプションですが、「宛先」フィールドは空白です。それが最善の方法である場合、「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);
}
4

2 に答える 2

3

テスト文字列ではなく、オーガナイザーを電子メールアドレスに設定すると、正常に機能しました。これをすべて書いたので、他の誰かが同じ問題を抱えている場合に備えて共有すると思いました

于 2012-08-24T15:25:40.060 に答える
1

Exchange サーバーが 2003 から Outlook 2010 にアップグレードされたときに、アプリが動作しなくなりました。アップグレード前は PUBLISH は正常に機能していましたが、REQUEST に変更する必要がありました。

記事をありがとう

于 2013-01-18T09:05:18.660 に答える