Outlook Interop:有没有办法检查 Outlook 文件夹是否为只读
Outlook Interop: is there a way to check if an Outlook folder is read-only
我正在用 C# 编写一段代码,以通过 Outlook Interop 从 Outlook 获取所有可写日历。 Outlook 中的日历只是默认项目类型为 OlItemType.olAppointmentItem
的 Outlook 文件夹。但是,如果您将 Hotmail 帐户添加到 Outlook,总会有只读日历,例如生日日历。
有没有办法检测这些只读日历?
如果这些是交换帐户,您可以轻松地做到这一点,但您特别提到了 hotmail,因此经过大量研究后,看来唯一的方法是使用第三方插件或围绕 MAPI/ACL图书馆。 Microsoft 从未通过 com 命名空间提供 ACL。
每个人都在建议赎回:http://www.dimastr.com/redemption/home.htm,您可以在此处查看他们公开的 RDOACL 功能:
所以看起来没有专门的方法来检查当前用户是否有权写入 outlook 文件夹,前提是它可能不是 exchange 文件夹。因此,最可靠的方法可能是尝试创建和删除虚拟项目:
try
{
((AppointmentItem)calendarFolder.Items.Add(OlItemType.olAppointmentItem)).Delete();
// Do whatever you need with this folder.
}
catch
{
// This probably means the folder is not writeable.
}
请注意,项目类型需要与文件夹默认项目类型匹配。
我正在用 C# 编写一段代码,以通过 Outlook Interop 从 Outlook 获取所有可写日历。 Outlook 中的日历只是默认项目类型为 OlItemType.olAppointmentItem
的 Outlook 文件夹。但是,如果您将 Hotmail 帐户添加到 Outlook,总会有只读日历,例如生日日历。
有没有办法检测这些只读日历?
如果这些是交换帐户,您可以轻松地做到这一点,但您特别提到了 hotmail,因此经过大量研究后,看来唯一的方法是使用第三方插件或围绕 MAPI/ACL图书馆。 Microsoft 从未通过 com 命名空间提供 ACL。
每个人都在建议赎回:http://www.dimastr.com/redemption/home.htm,您可以在此处查看他们公开的 RDOACL 功能:
所以看起来没有专门的方法来检查当前用户是否有权写入 outlook 文件夹,前提是它可能不是 exchange 文件夹。因此,最可靠的方法可能是尝试创建和删除虚拟项目:
try
{
((AppointmentItem)calendarFolder.Items.Add(OlItemType.olAppointmentItem)).Delete();
// Do whatever you need with this folder.
}
catch
{
// This probably means the folder is not writeable.
}
请注意,项目类型需要与文件夹默认项目类型匹配。