我有许多 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。但是,由于许可成本高,这不是一种选择。
如何将味精保存为另一种格式?