从多个帐户获取日历约会



我目前正在创建一个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 适用于委派方案,不会授予你访问所有本地/个人日历的权限。相反,循环遍历 NameSpace.Stores,并使用 Store.GetDefaultFolder 获取每个已配置帐户/商店的日历。

最新更新