1

我正在尝试将所有电子邮件从我的主 PST 的一个文件夹复制到我创建的新 PST,然后 SFTP 该 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");
        }
    }

任何帮助,将不胜感激。

4

1 回答 1

1

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

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

于 2014-11-27T20:50:53.960 回答