【问题标题】:Outlook Interop: is there a way to check if an Outlook folder is read-onlyOutlook 互操作:有没有办法检查 Outlook 文件夹是否为只读
【发布时间】:2015-01-16 08:45:26
【问题描述】:

我正在用 C# 编写一段代码,以通过 Outlook 互操作从 Outlook 获取所有可写日历。 Outlook 中的日历只是 Outlook 文件夹,其默认项目类型为 OlItemType.olAppointmentItem。但是,如果您将 Hotmail 帐户添加到 Outlook,则始终存在只读日历,例如生日日历。

有没有办法检测这些只读日历?

【问题讨论】:

  • 对于文件系统上的任何东西,一般的答案是实际尝试写入它,然后在失败时处理异常。否则,您只是在创建竞争条件。
  • 这也是我目前唯一能想到的方法。我一直在使用以下代码进行检查,但不确定是否有更好的方法:((AppointmentItem)folder.Items.Add(OlItemType.olAppointmentItem)).Delete()

标签: c# outlook-addin


【解决方案1】:

如果这些是交换帐户,您可以稍微轻松地做到这一点,但您特别提到了 hotmail,因此经过大量研究,唯一的方法是使用第三方插件或围绕 MAPI/ACL 编写自己的包装器图书馆。 Microsoft 从未通过 com 命名空间提供 ACL。

每个人都在建议兑换:http://www.dimastr.com/redemption/home.htm,您可以在此处查看他们公开的 RDOACL 功能:

http://www.dimastr.com/redemption/RDOACL.htm

【讨论】:

    【解决方案2】:

    所以看起来没有专门的方法来检查当前用户是否有权写入 Outlook 文件夹,前提是它可能不是交换文件夹。因此,最可靠的方法可能是尝试创建和删除一个虚拟项目:

    try
    {
        ((AppointmentItem)calendarFolder.Items.Add(OlItemType.olAppointmentItem)).Delete();
    
        // Do whatever you need with this folder.
    }
    catch
    {
        // This probably means the folder is not writeable.
    }
    

    注意项目类型需要与文件夹默认项目类型匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多