【问题标题】:C# Outlook 2013 Addin Accessing ExplorerC# Outlook 2013 插件访问资源管理器
【发布时间】:2015-04-29 02:27:02
【问题描述】:

是否可以访问资源管理器以检查某些文件夹是否存在,并在必要时从 Outlook 插件创建文件夹?如果是这样,从 Outlook 使用什么 API/接口来执行此操作。 MAPIFolder 似乎仅适用于 Outlook 文件夹。

提前致谢

编辑:澄清一下,我说的是不属于 Outlook 的操作系统文件夹。我所说的特定文件夹实际上位于域中的文件服务器上。映射到将使用插件的用户计算机。他是域用户并且已经过身份验证这一事实是否意味着我在尝试从插件访问文件系统时不会遇到任何问题?

【问题讨论】:

  • 您不能使用System.IO.Directory.Exists(string)System.IO.File.Exists(string)?见msdn.microsoft.com/en-us/library/…msdn.microsoft.com/en-us/library/system.io.file(v=vs.110).aspx
  • @RonBeyer 这需要通过 Outlook 对象模型完成 - 它不是文件系统。 Shenk 你是在使用 VSTO 还是 VBA?
  • 你说的是 Outlook 还是 OS 文件夹?
  • 操作系统文件夹,C# 中的 VSTO
  • 如果@RonBeyer 建议的功能是操作系统文件夹,它们会起作用吗?还是我需要坚持使用 MAPIFolder 界面?我认为 MAPI 仅适用于他们帐户中的 Outlook 文件夹。

标签: c# vsto outlook-addin explorer


【解决方案1】:

您需要使用 System.IO.* 类来检查文件夹是否存在。例如,System.IO 命名空间中 Directory 或 File 类的 Exists 方法确定给定路径是否引用磁盘上的现有目录/文件:

        if(File.Exists(path)) 
        {
            // This path is a file
            ProcessFile(path); 
        }               
        else if(Directory.Exists(path)) 
        {
            // This path is a directory
            ProcessDirectory(path);
        }
        else 
        {
            Console.WriteLine("{0} is not a valid file or directory.", path);
        }        

【讨论】:

  • 当我回到办公桌后,我将自己测试它,但是您知道以这种方式访问​​域中的网络驱动器是否会出现问题?当计算机加入域时,用户已经登录。我认为不会有问题,因为它应该像本地目录一样,因为它已被映射,但我不是 100% 的。
【解决方案2】:

为什么需要 Explorer 对象呢?它仅用于显示 Outlook 文件夹。

您可以使用父文件夹对象检查特定文件夹是否存在MAPIFolder.Folders.Item("sub folder name")。如果具有给定名称的文件夹不存在,则会引发异常(您的代码需要捕获该异常)

要添加新文件夹,请使用MAPIFolder.Folders.Add("sub folder name")

【讨论】:

  • 资源管理器是指您可以通过 Windows 资源管理器访问的文件夹。我需要先检查不属于 Outlook 的文件夹是否存在,然后再将某些内容保存在那里,这是否适用于不属于 Outlook 的文件夹,例如收件箱、已发送等?
  • 是的。您需要检查的文件夹相对于其他文件夹(例如收件箱)位于何处?
  • 我需要检查的文件夹位于映射网络驱动器中的 Outlook 之外。
  • 那这真的和Outlook无关。在 C# 中,您可以使用 Directory.Exists() 方法 - msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多