我编写了一个outlook插件,用于检索发件人的邮件项目的SMTP电子邮件地址。它在大多数机器上工作正常,但是,我有一台机器(我的新开发机器)每次尝试解析来自交换用户的电子邮件的SMTP地址时都会抛出COMException。以下是我正在使用的代码...
private string SenderEmail(MailItem item)
{
if (item == null)
{
return "";
}
else
{
string senderEmail = string.Empty;
if (item.SenderEmailType.ToUpper() == "EX")
senderEmail = GetEmailAddressFromOU(item.SenderEmailAddress);
else
senderEmail = item.SenderEmailAddress;
return senderEmail;
}
}
private string GetEmailAddressFromOU(string ouName)
{
string emailAddress = string.Empty;
NameSpace oNS = ((Microsoft.Office.Interop.Outlook.Application)OutlookAppObj).GetNamespace("MAPI");
Recipient recip = oNS.CreateRecipient(ouName);
recip.Resolve();
ExchangeUser exUser = recip.AddressEntry.GetExchangeUser();
emailAddress = exUser.PrimarySmtpAddress;
Marshal.ReleaseComObject(exUser);
Marshal.ReleaseComObject(recip);
Marshal.ReleaseComObject(oNS);
return emailAddress;
}
访问Recipient对象的AddressEntry属性时发生以下COMException:
消息=“尝试的操作失败。无法找到对象。”
我正在使用Windows 7(64位),使用Outlook 2010,但是这个相同的代码适用于具有相同操作系统和Outlook版本的其他计算机。它也适用于我以前的开发机器,也就是Windows 7(32位)和Outlook 2010。
我搜索了StackOverflow和Google的任何分辨率,但没有找到任何分辨率。
有人能解释一下这个问题吗?
答案 0 :(得分:0)
仍然不确定导致问题的原因,但删除Outlook中的所有电子邮件帐户并重新添加它们,修复了问题。
答案 1 :(得分:0)
要解决帐户问题,请尝试删除OST文件。
此链接说明了如何执行此操作:
http://social.technet.microsoft.com/Forums/en/w7itprogeneral/thread/d8fe1d52-4f95-4158-ab2f-13cab5cbabf9