Получение адреса электронной почты от объекта получателя
Я разрабатываю надстройку VSTO, которая должна прочитать все адреса электронной почты при отправке нового сообщения. Ниже приведен код, который я использую сейчас, но в некоторых случаях он не работает.
if (addr.Type == "EX")
{
if (addr.AddressEntryUserType == OlAddressEntryUserType.olExchangeUserAddressEntry
|| addr.AddressEntryUserType == OlAddressEntryUserType.olExchangeRemoteUserAddressEntry)
{
exch = addr.GetExchangeUser();
smtpAddress = exch != null ? exch.PrimarySmtpAddress : null;
}
else if (addr.AddressEntryUserType == OlAddressEntryUserType.olOutlookContactAddressEntry)
{
cont = addr.GetContact();
//returns the actual contact but it has 3 email properties (Email1Address, Email2Address, Email3Address).
//How to identify which email has the user selected
}
}
else if (addr.Type == "SMTP")
{
smtpAddress = addr.Address;
}
Если AddressEntryUserType имеет значение olExchangeUserAddressEntry или olExchangeRemoteUserAddressEntry, то код работает нормально. Но если это локальный контакт Outlook (olOutlookContactAddressEntry), я не уверен, как получить адрес электронной почты. Метод GetContact дает мне фактический контакт, но, поскольку он имеет 3 электронных письма, я не знаю, как найти, какой адрес выбрал пользователь при составлении электронного письма.
Я уже пытался преобразовать адрес электронной почты на основе Exchange в SMTP, как обсуждалось на этом форуме. Но это дает огромное влияние на производительность. Для преобразования одного адреса в SMTP требуется около 300 мс. Есть ли другой эффективный способ идентифицировать адрес электронной почты из объекта Recepient?