c# - 使用 Redemption 将 MSG 转换为 EML 后,内部地址丢失

标签 c# mapi outlook-redemption msg eml

我目前正在评估 redemption用于将 MSG 文件转换为 EML 文件的库。

RDOSession session = new RDOSession();
RDOMail msg = session.GetMessageFromMsgFile(msgFile);
msg.SaveAs(emlFile, rdoSaveAsType.olRFC822);

到目前为止,与我针对我们的“野生 MSG 文件语料库”测试的其他所有内容相比,Redemption 在这里做得非常好。

然而,内部电子邮件地址存在问题。对于内部电子邮件地址,生成的 EML 文件确实包含 personal仅部分地址,但不是真实电子邮件地址 @符号。

我可以看到 RDOMail的收件人对象包含 SMTPAddress 中的真实电子邮件地址任何情况下的属性(property)。 但是 Address 有区别包含外部地址的“真实电子邮件地址”但类似 /O=EXAMPLE ORGANIZAION/OU=SOME GROUP/cn=Recipients/cn=FBarney 的属性用于内部地址。

后者正是在生成的 EML 文件中缺少真实电子邮件地址的地址。

所以我试图覆盖 Address这样的属性:

recipient.Address = recipient.SMTPAddress;

但这对最后生成的 EML 文件没有任何影响。

如何通过兑换将 MSG 转换为 EML 而不会丢失内部地址的真实电子邮件地址

最佳答案

这表明 EX 类型地址无法转换为 SMTP。如果当前 MAPI session 无权访问托管这些 GAL 对象的 Exchange 服务器,通常会发生这种情况。在您的特定情况下,根本没有 MAPI session 。您可以从 Outlook 对象模型将 RDOSession.MAPIOBJECT 属性设置为 Namespace.MAPIOBJECT 以与 Outlook 共享 session ,或者您可以调用 RDOSession.Logon/LogonExchangeMailbox/等

您还可以尝试指定 olRfc822_Redemption 格式以强制 Redemption 使用其内部 MIME 转换器(它跳过很多环节从邮件本身而不是 GAL 获取 SMTP 地址)。默认情况下,如果安装了 Outlook,olRfc822 使用内置的 Outlook 转换器 (IConvertorSession)。

关于c# - 使用 Redemption 将 MSG 转换为 EML 后,内部地址丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31969833/

相关文章:

c++ - 如何在没有邮件客户端的情况下使用简单 MAPI?

iphone - 应用程序外订阅中还提供了通过促销代码解锁功能

email - 在Powershell中使用电子邮件正文创建.bat文件

c# - 无法通过 Tableau REST API 返回用户收藏夹

c# - asp.net core 中所需的 signalR 连接 ID

python - 从 Python 修改 Microsoft Outlook 联系人

delphi - 如何在 delphi 上实现 OutlookApp.Onquit 事件并进行兑换并避免应用程序繁忙时挂起 Outlook

c# - 。网。异步 HttpWebRequest 的最大数量

c# - CS0246 : The type or namespace name 'CrystalDecisions' could not be found

http - 身份验证在 MAPI/HTTP 中如何工作