我编写了一个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
变量表示true
,session.CurrentWindowsUser.SMTPAddress
显示我调试时的电子邮件地址。
如果我没有弄错,8004010F
错误表示找不到项目。如果这是真的,那么我不确定为什么完全相同的代码在64位Windows上使用32位Outlook,32位Outlook Redemption,并且不适用于64位Outlook,64位Outlook Redemption,和64位Windows。
感谢您的帮助。
答案 0 :(得分:0)
GAL容器无法解析GAL.ResolveName使用的PR_ANR限制中的SMTP地址。使用RDOSession.AddressBook.ResolveName
(注意这里没有GAL部分)或改为显示名称。