删除后使用的PST文件

时间:2014-11-27 19:38:00

标签: c# visual-studio outlook pst

我正在尝试将所有电子邮件从我的主PST的一个文件夹复制到我创建的新PST,然后将PST复制到PST。我正在正确创建PST,文件被复制,然后它从导航栏中删除,但它仍然被Outlook用于某些原因,这不会让我打开它阅读。这就是我所拥有的:

    public static Outlook.Application oApp = new Outlook.Application();
    public static Outlook.NameSpace oNS = oApp.GetNamespace("MAPI");
    public static Outlook.MAPIFolder RootFolder;
    public static void CopyMessages()
    {
        string folderName = "emails";
        string strFileName = @"C:\test.pst";
        string strDisplayName = "PST";
        Outlook.MAPIFolder inBox = oApp.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
        ThisAddIn.oNS.AddStore(strFileName);
        RootFolder = ThisAddIn.oNS.Folders.GetLast();
        RootFolder.Name = strDisplayName;
        //ThisAddIn.oNS.RemoveStore(RootFolder);
        //ThisAddIn.oNS.AddStore(strFileName);            
        try
        {
            inBox.Folders[folderName].CopyTo(RootFolder);
            //System.Threading.Thread.Sleep(2000);
            ThisAddIn.oNS.RemoveStore(RootFolder);
            //ThisAddIn.oNS.AddStore(strFileName);

        }
        catch
        {
            MessageBox.Show("There is no folder named " + folderName +
                ".", "Find Folder Name");
        }
    }

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

出于性能原因,Outlook中的PST提供商在关闭PST文件后保持PST文件打开30分钟。

我不认为只使用Outlook对象模型可以做很多事情。您可以创建一个单独的应用程序,该应用程序使用扩展MAPI(C ++或Delphi)或Redemption(任何语言)创建临时配置文件,并将指定的PST文件添加到该配置文件。退出辅助进程后,文件将被释放,您的插件将能够删除它。