Я пробую адрес электронной почты полей from, to и cc. Иногда это электронные письма электронной почты, SMTP или рассылки электронной почты.Как получить PrimarySmtpAddress для пользователей Exchance и списки рассылки
Я нашел человека, у которого была подобная проблема, но у них не было ничего о списках рассылки.
Я немного модифицировал код, чтобы попытаться получить это значение.
if (type.ToLower() == "ex")
{
recip = Globals.ThisAddIn.Application.GetNamespace("MAPI").CreateRecipient(address);
if (recip.DisplayType == OlDisplayType.olDistList)
{
sAddress = recip.AddressEntry.GetExchangeDistributionList().PrimarySmtpAddress;
}
else
{
sAddress = recip.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
}
}
else
{
sAddress = address.Replace("'", "");
}
Проблема заключается в том, что recip.DisplayType
является недействительным, если не существует небольшая задержка после получения получателя и вызова DisplayType на этом объекте.
Есть ли лучший способ сделать это?
Я изменил код на следующем, но у меня есть опасения, что это не будет работать для всех DisplayTypes, и я даже не уверен, что большинство типов (варианты приведены здесь http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.oldisplaytype%28v=office.14%29.aspx)
private static string GetSmtpAddress(AddressEntry addressEntry)
{
string address;
if (addressEntry.Type == "ex")
{
if (addressEntry.DisplayType == OlDisplayType.olDistList)
{
address = addressEntry.GetExchangeDistributionList().PrimarySmtpAddress;
}
else
{
address = addressEntry.GetExchangeUser().PrimarySmtpAddress;
}
}
else
{
address = addressEntry.Address;
}
return address;
}
Кроме того, откуда берутся переменные типа и адреса? Они происходят из другого объекта AddressEntry? Почему бы не использовать его? –
Спасибо за помощь. Сначала я попытаюсь использовать решение. Ваш другой вопрос хороший, позвольте мне проверить .. – Josh
Хорошо, так это то, что я сделал. Я просматриваю каждого получателя в почтовом ящике, затем получаю адрес электронной почты с помощью адреса получателя.AddressEntry.Address. Первоначальная проблема заключалась в том, что у этого была бы информация AD для пользователей Exchange. Поэтому я закончил тем, что передал эту функцию выше, чтобы разобрать. Теперь, когда я смотрю на него, я могу просто вызвать recipient.GetExchangeDistributionList(). PrimarySmtpAddress или .GetExchangeUser(). PrimarySmtpAddress или .Address при необходимости. Было бы неплохо иметь одно свойство, чтобы получить соответствующий smtp-адрес. – Josh