从位于同一网络中的另一台计算机上的电子邮件创建pst时未呈现的邮件

时间:2018-03-29 13:18:47

标签: outlook-redemption

我正在创建一个来自同一网络中另一台机器的消息文件的pst。但是当我加载pst时,不会呈现消息。我添加了截图。代码如下:

从本地计算机导入邮件文件时不会发生问题。

     private static void GeneratePST(string [] messageFiles, string outputPstPath)
    {
        RDOSession pstSession = null;
        RDOPstStore store = null;
        RDOFolder folder = null;
        RDOMail rdo_Mail = null;
        RDOItems items = null;
        try
        {
            pstSession = new RDOSession();
            store = pstSession.LogonPstStore(outputPstPath, 1, Path.GetFileNameWithoutExtension(outputPstPath));
            folder = store.IPMRootFolder;
            folder = folder.Folders.Add("Loose Messages");
            foreach (string messages in messageFiles)
            {
                items = folder.Items;
                rdo_Mail = items.Add("IPM.NOTE");
                rdo_Mail.Import(messages, rdoSaveAsType.olMSG);
                rdo_Mail.Save();
            }
        }
        catch (Exception ex)
        {
            //log exception
        }
        finally
        {
            Marshal.ReleaseComObject(rdo_Mail);
            Marshal.ReleaseComObject(folder);
            Marshal.ReleaseComObject(store);
            Marshal.ReleaseComObject(items);
            pstSession.Logoff();
            Marshal.ReleaseComObject(pstSession);
            GC.Collect();
        }      
    }

email messages not rendered

我还在导入邮件文件之前模拟了网络计算机。但问题仍然存在。

该问题仅存在于另一台计算机中的文件中。为我机器中的msg文件呈现消息。另外,我注意到问题只与消息文件有关。呈现Eml文件。所以,它可能不是冒充的问题。

请帮助。

1 个答案:

答案 0 :(得分:0)

Microsoft不支持访问网络驱动器上的PST文件。它们必须在本地机器上。

此外,没有理由不断检索RDOItems对象 - 您永远不会释放旧值,因此这些对象会保持活动状态,直到您的应用程序退出。同样适用于rdo_Mail对象:

        folder = folder.Folders.Add("Loose Messages");
        items = folder.Items;
        foreach (string messages in messageFiles)
        {
            if (rdo_Mail != null) Marshal.ReleaseComObject(rdo_Mail);
            rdo_Mail = items.Add("IPM.NOTE");
            rdo_Mail.Import(messages, rdoSaveAsType.olMSG);
            rdo_Mail.Save();
        }