【问题标题】:Cannot resolve RDOAddressEntry using Outlook Redemption无法使用 Outlook Redemption 解析 RDOAddressEntry
【发布时间】:2016-03-01 19:42:18
【问题描述】:

我编写了一个 C# Windows 窗体应用程序,它使用以前版本的 Outlook Redemption 来发送绕过 Outlook 安全消息的电子邮件。在我从 32 位 Outlook 2010 升级到 64 位 Outlook 2013 之前效果很好。现在,我在 Windows 64 位上使用 64 位 Outlook Redemption DLL,版本 5.10.0.4416,64 位 Outlook 2013 ,并且我收到“无法解决”错误,错误代码 -2147221233/8004010F

当我将 32 位 Outlook 与 32 位 Outlook Redemption DLL(在 Windows 64 位上)一起使用时,以下代码运行良好。我已将参考更新为使用 64 位 Outlook Redemption DLL,并将我的应用程序解决方案更新为 x64。

RDOSession session = new RDOSession();
session.Logon(Type.Missing, Type.Missing, Type.Missing, true, Type.Missing, Type.Missing);
bool loggedOn = session.LoggedOn;                        // Debug, true
RDOFolder draft = session.GetDefaultFolder(rdoDefaultFolders.olFolderDrafts);
string smtp = session.CurrentWindowsUser.SMTPAddress);   // Debug, valid user@mycompany.com
RDOAddressEntry smtpAddress = session.AddressBook.GAL.ResolveName(session.CurrentWindowsUser.SMTPAddress);

RDOAddressEntry smtpAddress = session.AddressBook.GAL.ResolveName(session.CurrentWindowsUser.SMTPAddress); 行是收到错误的行。

另外,loggedOn 变量表示truesession.CurrentWindowsUser.SMTPAddress 显示我调试时的电子邮件地址。

如果我没记错的话,8004010F 错误表示找不到项目。如果这是真的,那么我不确定为什么完全相同的代码在 64 位 Windows 上适用于 32 位 Outlook、32 位 Outlook Redemption,而不适用于 64 位 Outlook、64 位 Outlook Redemption,和 64 位 Windows。

感谢您的帮助。

【问题讨论】:

    标签: c# outlook outlook-redemption


    【解决方案1】:

    GAL 容器不会解析 GAL.ResolveName 使用的 PR_ANR 限制中的 SMTP 地址。要么使用RDOSession.AddressBook.ResolveName(注意这里没有 GAL 部分),要么改为传递显示名称。

    【讨论】:

    • 这是 Outlook 2013 的新功能吗?只是好奇为什么它在 Outlook 2010 上对我有用这么久。
    • 两年来每个月运行应用程序时,它使用 GAL 工作真的很奇怪。感谢您的澄清。
    • 我不知道它为什么起作用 - 我永远无法解析 GAL 中的 SMTP 地址。我总是不得不使用 RDOSession.AddressBook.ResolveName 。
    猜你喜欢
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多