C #: Обмен адресом с SMTP ИЛИ еще один способ получения SMTP почты из контактов Windows? - PullRequest
0 голосов
/ 09 сентября 2011

Я пытаюсь найти способ (в C #) прочитать текстовый файл, в котором написано имя, а затем программа должна выполнить поиск в адресной книге (Outlook или даже других адресных книгах Windows) и разрешите это имя как SMTP-адрес.

Через OOM я легко могу получить почтовые адреса в формате Exchange, но я не знаю, что с ними делать, так как я создаю свою почту как объект MailMessage, который поддерживает только SMTP-адреса.

Я пробовал разные способы: 1-Microsoft.Communications.Contact:

`ContactManager cm = new ContactManager();`

`List<Contact> contatti = (List<Contact>)cm.GetContactCollection();`

Второй ряд вызывает у меня исключение NullReferenceException.

Библиотека 2-CDO: я ничего не могу получить, потому что в ней отсутствуют некоторые важные классы, такие как AddressEntry.

Библиотека 3-MAPI (CDO 1.2, загруженная с microsoft.com): только полна интерфейсов, не может ничего создавать.

Есть предложения?

1 Ответ

0 голосов
/ 09 сентября 2011

Как предполагает Бен, вы можете столкнуться с проблемами, когда ваше имя не является однозначным.Вы должны быть готовы к этому.

Помимо этой проблемы у вас есть два варианта: запрос AD для получения информации (с использованием System.DirectoryServices или, что еще лучше, System.DirectoryServices.AccountManagement).Из возвращенных объектов прочитайте свойство proxyAddresses.Это свойство содержит адреса пользователя или контакта.

Если вы используете Exchange 2007 или более позднюю версию, вы также можете использовать EWS Managed API для разрешения имени через Exchange.Используйте метод ResolveNamed: http://msdn.microsoft.com/en-us/library/exchangewebservices.exchangeservicebinding.resolvenames(v=exchg.140).aspx

EWS Managed API - Загрузить: http://www.microsoft.com/download/en/details.aspx?id=13480

EWS Managed API - SDK: http://msdn.microsoft.com/en-us/library/dd633710(v=exchg.80).aspx

...