Я повторяю все AppointmentItem.Recipients.Для каждого получателя я использую следующий служебный метод для получения получателей «нормального» SMTP-адреса электронной почты:
для этого я использовал сообщение из stackoverflow: Получение адреса электронной почты из объекта получателя
public static string GetSmtpAddress(Outlook.AddressEntry addressEntry)
{
String smtpAddress;
if (addressEntry.Type == "EX")
{
if (addressEntry.AddressEntryUserType == Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry
|| addressEntry.AddressEntryUserType == Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry)
{
Outlook.ExchangeUser user = addressEntry.GetExchangeUser();
smtpAddress = user != null ? user.PrimarySmtpAddress : null;
}
else if (addressEntry.AddressEntryUserType == Outlook.OlAddressEntryUserType.olOutlookContactAddressEntry)
{
//returns the actual contact but it has 3 email properties (Email1Address, Email2Address, Email3Address).
//How to identify which email has the user selected
Outlook.ContactItem cont = addressEntry.GetContact();
String OABID = addressEntry.ID;
String typ = OABID.Substring(29 * 2, 2);
if (typ=="00")
{
smtpAddress = cont.Email1Address; <!-- Strange Emailadress
}else if (typ=="01")
{
smtpAddress = cont.Email1Address;
} else
{
smtpAddress = cont.Email2Address;
}
} else
{
smtpAddress = "";
}
}
else if (addressEntry.Type == "SMTP")
{
smtpAddress = addressEntry.Address;
}
else
{
smtpAddress = "";
}
return smtpAddress;
}
Строка, помеченная <- Strage Email, возвращает странно выглядящий адрес электронной почты: она выглядит как / o = Exchange xxxxx что-то xxxx .. В самом конце она также содержит адрес smtp.</p>
Я ищу 100% надежную служебную функцию, которая извлекает правильный SMTP-адрес независимо от типа адреса получателя, пользователя Exchange, пользователя адресной книги или чего-либо еще.Любая помощь очень ценится.
С наилучшими пожеланиями Ханнес