Fab*_*ney 4 c# mapi msg eml outlook-redemption
我目前正在评估redemption将 MSG 文件转换为 EML 文件的库。
RDOSession session = new RDOSession();
RDOMail msg = session.GetMessageFromMsgFile(msgFile);
msg.SaveAs(emlFile, rdoSaveAsType.olRFC822);
Run Code Online (Sandbox Code Playgroud)
到目前为止,与我针对“野生 MSG 文件语料库”测试过的其他所有内容相比,Redemption 在这里做得非常好。
然而,内部电子邮件地址存在问题。对于内部电子邮件地址,生成的 EML 文件personal仅包含地址的一部分,但不包含带有符号的真实电子邮件地址@。
在任何情况下,我都可以看到RDOMail的收件人对象包含SMTPAddress属性中的真实电子邮件地址。但是Address包含外部地址的“真实电子邮件地址”的属性有所不同,但类似于/O=EXAMPLE ORGANIZAION/OU=SOME GROUP/cn=Recipients/cn=FBarney内部地址的属性。
后者正是在生成的 EML 文件中缺少真实电子邮件地址的地址。
所以我试图覆盖这样的Address属性:
recipient.Address = recipient.SMTPAddress;
Run Code Online (Sandbox Code Playgroud)
但这对最后生成的 EML 文件没有任何影响。
如何在不丢失内部地址的真实电子邮件地址的情况下将 MSG 转换为 EML 并进行兑换?
这表明 EX 类型地址无法转换为 SMTP。如果当前 MAPI 会话无权访问承载这些 GAL 对象的 Exchange 服务器,通常会发生这种情况。在您的特定情况下,根本没有 MAPI 会话。您可以从 Outlook 对象模型将 RDOSession.MAPIOBJECT 属性设置为 Namespace.MAPIOBJECT 以与 Outlook 共享会话,也可以调用 RDOSession.Logon/LogonExchangeMailbox/etc。
您还可以尝试指定 olRfc822_Redemption 格式以强制 Redemption 使用其内部 MIME 转换器(它跳过很多圈以从邮件本身而不是 GAL 中获取 SMTP 地址)。如果安装了 Outlook,olRfc822 默认使用内置的 Outlook 转换器 (IConvertorSession)。
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |