使用 Redemption 将 MSG 转换为 EML 后,内部地址丢失
Internal addresses are missing after MSG to EML conversion using Redemption
我目前正在评估用于将 MSG 文件转换为 EML 文件的 redemption
库。
RDOSession session = new RDOSession();
RDOMail msg = session.GetMessageFromMsgFile(msgFile);
msg.SaveAs(emlFile, rdoSaveAsType.olRFC822);
到目前为止,与我针对 "wild MSG-files corpus".
测试过的其他所有内容相比,Redemption 在这方面做得非常好
然而,内部电子邮件地址存在问题。对于内部电子邮件地址,生成的 EML 文件仅包含地址的 personal
部分,但不包含带有 @
符号的 真实电子邮件地址 .
我可以看到 RDOMail
的收件人对象在任何情况下都包含 SMTPAddress
属性 中的真实电子邮件地址。
但是 Address
属性 有所不同,它包含外部地址的 "real e-mail address" 但内部地址的 /O=EXAMPLE ORGANIZAION/OU=SOME GROUP/cn=Recipients/cn=FBarney
。
后面的正是在生成的 EML 文件中缺少真实电子邮件地址的地址。
所以我尝试像那样覆盖 Address
属性:
recipient.Address = recipient.SMTPAddress;
但这对最后生成的 EML 文件没有任何影响。
如何通过兑换将 MSG 转换为 EML 而不会丢失内部地址的真实电子邮件地址?
这表明 EX 类型地址无法转换为 SMTP。如果当前 MAPI 会话无权访问托管这些 GAL 对象的 Exchange 服务器,通常会发生这种情况。在您的特定情况下,根本没有 MAPI 会话。您可以从 Outlook 对象模型将 RDOSession.MAPIOBJECT
属性 设置为 Namespace.MAPIOBJECT
以与 Outlook 共享会话,或者您可以调用 RDOSession.Logon
/LogonExchangeMailbox
/等。
您也可以尝试指定 olRfc822_Redemption
格式以强制 Redemption 使用其内部 MIME 转换器(它跳过很多环节从邮件本身而不是 GAL 获取 SMTP 地址)。如果安装了 Outlook,olRfc822 默认使用内置的 Outlook 转换器 (IConvertorSession
)。
我目前正在评估用于将 MSG 文件转换为 EML 文件的 redemption
库。
RDOSession session = new RDOSession();
RDOMail msg = session.GetMessageFromMsgFile(msgFile);
msg.SaveAs(emlFile, rdoSaveAsType.olRFC822);
到目前为止,与我针对 "wild MSG-files corpus".
测试过的其他所有内容相比,Redemption 在这方面做得非常好然而,内部电子邮件地址存在问题。对于内部电子邮件地址,生成的 EML 文件仅包含地址的 personal
部分,但不包含带有 @
符号的 真实电子邮件地址 .
我可以看到 RDOMail
的收件人对象在任何情况下都包含 SMTPAddress
属性 中的真实电子邮件地址。
但是 Address
属性 有所不同,它包含外部地址的 "real e-mail address" 但内部地址的 /O=EXAMPLE ORGANIZAION/OU=SOME GROUP/cn=Recipients/cn=FBarney
。
后面的正是在生成的 EML 文件中缺少真实电子邮件地址的地址。
所以我尝试像那样覆盖 Address
属性:
recipient.Address = recipient.SMTPAddress;
但这对最后生成的 EML 文件没有任何影响。
如何通过兑换将 MSG 转换为 EML 而不会丢失内部地址的真实电子邮件地址?
这表明 EX 类型地址无法转换为 SMTP。如果当前 MAPI 会话无权访问托管这些 GAL 对象的 Exchange 服务器,通常会发生这种情况。在您的特定情况下,根本没有 MAPI 会话。您可以从 Outlook 对象模型将 RDOSession.MAPIOBJECT
属性 设置为 Namespace.MAPIOBJECT
以与 Outlook 共享会话,或者您可以调用 RDOSession.Logon
/LogonExchangeMailbox
/等。
您也可以尝试指定 olRfc822_Redemption
格式以强制 Redemption 使用其内部 MIME 转换器(它跳过很多环节从邮件本身而不是 GAL 获取 SMTP 地址)。如果安装了 Outlook,olRfc822 默认使用内置的 Outlook 转换器 (IConvertorSession
)。