我正在创建一个来自同一网络中另一台机器的消息文件的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();
}
}
我还在导入邮件文件之前模拟了网络计算机。但问题仍然存在。
该问题仅存在于另一台计算机中的文件中。为我机器中的msg文件呈现消息。另外,我注意到问题只与消息文件有关。呈现Eml文件。所以,它可能不是冒充的问题。
请帮助。
答案 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();
}