Я написал плагин для Outlook, который извлекает SMTP-адрес отправителя для почтового элемента.На большинстве машин он работает нормально, однако у меня есть одна машина (моя новая машина разработки), которая выдает исключение COMExec каждый раз, когда пытается разрешить SMTP-адрес для электронной почты от пользователя обмена.Ниже приведен код, который я использую ...
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;
}
При доступе к свойству AddressEntry объекта Recipient возникает следующее исключение COMExce:
Message = " Неудачная попытка операции. Не удалось найти объект."
Я использую Windows 7 (64-разрядная версия), использую Outlook 2010, однако этот же код работает на других компьютерах с той же ОС и версией Outlook.Он также отлично работает на моей предыдущей машине для разработки, которая также была Windows 7 (32-битная) и Outlook 2010.
Я искал StackOverflow и Google для любого разрешения, но не нашел.
Кто-нибудь может пролить свет на эту проблему?