0

我有许多 Outlook MSG 需要保存为其他格式,例如 MHT。每个 MSG 都有数千个收件人,我知道 MSG 结构不够健壮,无法处理大量收件人。我相信我的第一步是将 MSG 导入到 PST 中,它可以处理大量收件人。

我正在使用 Outlook 2010 和 Redemption 5.4(完整版)。我准备使用 Outlook 对象模型或 Redemption 来实现我的目标。平台:Windows 7 SP1,64 位。

我试过这些方法:

//Establish Session
RDOSession rdoSession = new RDOSession();
rdoSession.Logon(null, null, false, true, null, true);

//Create empty mail item in PST.
RDOMail rdoMail = rdoSession.GetDefaultFolder(rdoDefaultFolders.olFolderInbox).Items.Add(null);

//Merge MSG into new, empty mail
//fi.FullName = C:\<subdirectories>\009.msg
rdoMail.Import(fi.FullName, rdoSaveAsType.olMSGUnicode);
rdoMail.Save();

//Save as MHT
rdoMail.SaveAs(diMht.FullName + @"\" + strNormalizedSubject + ".mht", Redemption.rdoSaveAsType.olMHTML);

此代码无法将 MSG 导入 PST。我收到此异常: {"Error importing: 0x8004011B"}

我也尝试过这种不依赖 PST 的方法。

RDOMail rdoMail = rdoSession.GetMessageFromMsgFile(fi.FullName, false);
string strNormalizedSubject = NormalizeSubject(rdoMail.Subject);

rdoMail.SaveAs(diMht.FullName + @"\" + strNormalizedSubject + ".mht", Redemption.rdoSaveAsType.olMHTML);

此代码导致此异常:Error in OpenIMsgOnIStg: MAPI_E_CORRUPT_DATA

我相信 Transend Migrator 可以转换带有大数字或收件人的 MSG。但是,由于许可成本高,这不是一种选择。

如何将味精保存为另一种格式?

4

2 回答 2

0

0x8004011B 是 MAPI_E_CORRUPT_DATA。看起来您的 PST 商店已损坏。您是否尝试使用 scanpst.exe 修复它?

于 2013-03-22T01:48:48.217 回答
0

Dmitry 建议我将 MSG 文件视为 OLE 存储文件。这个想法把我带到了这个网站:Reading an Outlook MSG File in C# CodeProject

我已经确认该项目能够打开具有大量收件人的 MSG。我用有 2,499 个收件人的 MSG 对其进行了测试。

该项目可能使提取构建 MHT 文件所需的数据成为可能。

于 2013-03-26T18:09:56.680 回答