从多个帐户获取日历约会
Getting calendar appointments from multiple accounts
我目前正在创建一个 Outlook 加载项,我正在使用下面的功能从我在 Outlook 中连接的所有帐户获取所有日历约会。
private List<Outlook.MAPIFolder> _calendarsFolder = new List<Outlook.MAPIFolder>();
private List<Outlook.Items> _calendarsItems = new List<Outlook.Items>();
private void GetCalendarsItems(object sender, EventArgs e)
{
Outlook.NameSpace session = Globals.ThisAddIn.Application.Session;
Outlook.Accounts accounts = session.Accounts;
foreach (Outlook.Account account in accounts)
{
Outlook.Recipient recipient = session.CreateRecipient(account.DisplayName);
Outlook.MAPIFolder calendar = null;
try
{
calendar = session.GetSharedDefaultFolder(recipient, Outlook.OlDefaultFolders.olFolderCalendar);
}
catch (Exception)
{
continue;
}
if (calendar != null)
{
var calendarItems = calendar.Items;
AttachEvents(calendarItems);
_calendarsFolder.Add(calendar);
_calendarsItems.Add(calendarItems);
foreach (Outlook.AppointmentItem item in calendarItems)
{
if (Select_T_OutlookEvent_Exists(item.GlobalAppointmentID)) continue;
var outlookEvent = new T_OutlookEvent()
{
Id = item.GlobalAppointmentID,
Title = item.Subject,
Description = item.Body,
Location = item.Location,
Organizer = item.GetOrganizer().Name
};
Insert_T_OutlookEvent(outlookEvent);
}
}
}
}
问题是我只能从一个帐户(连接到 Exchange,它也是 主帐户)获得约会。 GetSharedDefaultFolder 函数调用引发异常(COMException:操作失败,因为注册表或安装问题。重新启动 Outlook 并重试。如果问题仍然存在,请重新安装)所有其他帐户:一个连接到 Exchange 的帐户,另外两个不是。
在此先感谢您的帮助!
GetSharedDefaultFolder 适用于委托方案,不会让您访问所有 local/personal 日历。相反,遍历 NameSpace.Stores 并使用 Store.GetDefaultFolder 为每个配置的 account/store.
获取日历
我目前正在创建一个 Outlook 加载项,我正在使用下面的功能从我在 Outlook 中连接的所有帐户获取所有日历约会。
private List<Outlook.MAPIFolder> _calendarsFolder = new List<Outlook.MAPIFolder>();
private List<Outlook.Items> _calendarsItems = new List<Outlook.Items>();
private void GetCalendarsItems(object sender, EventArgs e)
{
Outlook.NameSpace session = Globals.ThisAddIn.Application.Session;
Outlook.Accounts accounts = session.Accounts;
foreach (Outlook.Account account in accounts)
{
Outlook.Recipient recipient = session.CreateRecipient(account.DisplayName);
Outlook.MAPIFolder calendar = null;
try
{
calendar = session.GetSharedDefaultFolder(recipient, Outlook.OlDefaultFolders.olFolderCalendar);
}
catch (Exception)
{
continue;
}
if (calendar != null)
{
var calendarItems = calendar.Items;
AttachEvents(calendarItems);
_calendarsFolder.Add(calendar);
_calendarsItems.Add(calendarItems);
foreach (Outlook.AppointmentItem item in calendarItems)
{
if (Select_T_OutlookEvent_Exists(item.GlobalAppointmentID)) continue;
var outlookEvent = new T_OutlookEvent()
{
Id = item.GlobalAppointmentID,
Title = item.Subject,
Description = item.Body,
Location = item.Location,
Organizer = item.GetOrganizer().Name
};
Insert_T_OutlookEvent(outlookEvent);
}
}
}
}
问题是我只能从一个帐户(连接到 Exchange,它也是 主帐户)获得约会。 GetSharedDefaultFolder 函数调用引发异常(COMException:操作失败,因为注册表或安装问题。重新启动 Outlook 并重试。如果问题仍然存在,请重新安装)所有其他帐户:一个连接到 Exchange 的帐户,另外两个不是。
在此先感谢您的帮助!
GetSharedDefaultFolder 适用于委托方案,不会让您访问所有 local/personal 日历。相反,遍历 NameSpace.Stores 并使用 Store.GetDefaultFolder 为每个配置的 account/store.
获取日历