无法使用Outlook Redemption解析RDOAddressEntry

时间:2016-03-01 19:42:18

标签: c# outlook outlook-redemption

我编写了一个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。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

GAL容器无法解析GAL.ResolveName使用的PR_ANR限制中的SMTP地址。使用RDOSession.AddressBook.ResolveName(注意这里没有GAL部分)或改为显示名称。