使用Redemption将EML转MSG时,如何排除附件导入?
Redemption转换EML到MSG时仅导入邮件主体的解决方案
直接使用Import方法会完整导入邮件所有内容(包括大附件),导致大文件转换失败。要实现仅导入邮件主体,你可以通过分步读取EML内容并手动复制到新MSG文件的方式跳过附件:
具体实现代码
// 创建目标空MSG文件 RDOMail rdoMail = session.CreateMessageFromMsgFile(msgfilepath); // 以只读模式加载源EML文件到临时对象(仅读取内容,不修改) RDOMail tempEmlMail = session.GetMessageFromMsgFile(emlfilepath, true); // 复制邮件核心主体及必要属性 rdoMail.Subject = tempEmlMail.Subject; rdoMail.Body = tempEmlMail.Body; // 纯文本正文 rdoMail.HTMLBody = tempEmlMail.HTMLBody; // HTML格式正文 rdoMail.SenderName = tempEmlMail.SenderName; rdoMail.SenderEmailAddress = tempEmlMail.SenderEmailAddress; rdoMail.To = tempEmlMail.To; rdoMail.CC = tempEmlMail.CC; rdoMail.BCC = tempEmlMail.BCC; rdoMail.ReceivedTime = tempEmlMail.ReceivedTime; // 可根据需求添加其他需要复制的邮件属性(如优先级、回复地址等) // 跳过附件,直接保存MSG文件 rdoMail.Save(); // 释放临时EML对象资源 tempEmlMail.Close();
关键说明
- 临时加载EML时使用
true参数以只读模式打开,避免锁定源文件同时提升读取效率。 - 仅复制邮件主体和必要头信息,完全跳过附件处理,从根源上避免大附件导致的内存溢出或转换失败问题。
- 若后续需要保留部分小附件,可遍历
tempEmlMail.Attachments筛选后再复制,当前需求下直接跳过即可。
内容的提问来源于stack exchange,提问作者lj 29
相关产品推荐
相关产品推荐

