我有一些Outlook MSG需要保存为备用格式,例如MHT。每个MSG都有成千上万的收件人,并且我知道MSG结构不足以处理大量的收件人。我相信我的第一步是将MSG导入可处理大量收件人的PST。将成千上万的收件人导入Outlook中的Outlook MSG
我正在使用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);
此代码不能味精导入到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可以将MSGs转换为大数字或收件人。但是,由于许可成本高,这不是一个选择。
如何将MSG保存为其他格式?
我相信被报告为腐败的数据是味精。我想导入MSG的PST很好,我可以导入其他MSG而没有问题。 MSG有成千上万的收件人,这使得Outlook无法打开它。我有两个版本的009.msg,一个是使用OutlookSpy创建的,另一个是通过将邮件从PST拖动到我的桌面创建的。两者都表现出相同的行为。 – 2013-03-22 18:04:15
如果您可以重新创建它们,请将它们保存为olMsgUnicode格式而不是olMsg。 – 2013-03-23 21:39:26
尝试使用olMsgUnicode从PST源重新创建MSG导致此OutlookSpy脚本错误:'没有足够的可用内存来运行此程序。退出一个或多个程序,然后重试。“通常,我无法指定源MSG的格式。我从许多客户处获得MSG,他们可能会使用各种系统。我仍然认为这个问题是大量的收件人。 – 2013-03-25 20:59:24