Outlook 2010:如何获取所有约会的列表,包括重复发生

时间:2011-06-21 13:11:58

标签: c# outlook-addin

我试图列出默认文件夹中的所有约会,如下所示:

Outlook.MAPIFolder calendarFolder = outlookApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);
Outlook.Items outlookCalendarItems = calendarFolder.Items;
outlookCalendarItems.IncludeRecurrences = true;

List<Outlook.AppointmentItem> lst = new List<Outlook.AppointmentItem>();

foreach (Outlook.AppointmentItem item in outlookCalendarItems)
{
    lst.Add(item);
}

这列出了所有约会,但定期约会除外 - 它仅列出第一个约会。有没有办法将所有重复添加到此列表中?

2 个答案:

答案 0 :(得分:0)

尝试在约会项目下使用AppointmentItem.GetRecurrancePattern方法(和RecurrencePattern类型),然后您可以迭代它们。

获得单次出现的示例可以是found here

private void CheckOccurrenceExample()
{
    Outlook.AppointmentItem appt = Application.Session.
        GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).
        Items.Find(
        "[Subject]='Recurring Appointment DaysOfWeekMask Example'")
        as Outlook.AppointmentItem;
    if (appt != null)
    {
        try
        {
            Outlook.RecurrencePattern pattern =
                appt.GetRecurrencePattern();
            Outlook.AppointmentItem singleAppt =
                pattern.GetOccurrence(DateTime.Parse(
                "7/21/2006 2:00 PM"))
                as Outlook.AppointmentItem;
            if (singleAppt != null)
            {
                Debug.WriteLine("7/21/2006 2:00 PM occurrence found.");
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
}

答案 1 :(得分:0)

如果按开始时间排序,则可以使用IncludeRecurrences属性获取所有约会项目。需要注意的一点是 - 如果您的定期约会没有结束,那么您将获得无限循环 - 所以请确保并测试结束日期。

请参阅:https://msdn.microsoft.com/en-us/library/bb220097(v=office.12).aspx