AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2012, 15:19   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Проверка существования email-адреса в Active Directory через ADSI
В моем случае для работы разного рода рассылок пользователям в настройках того или иного функционала указываются SMTP-адреса, обычно привязанные к локальной (офисной) почтовой системе. При этом, если почтовый адрес указан некорректно, то сообщения по нему, очевидно, доставлены не будут, и посыпятся ошибки от Exchange Server'а. Чтобы снизить вероятность ошибочного указания в настройках несуществующего в домене почтового адреса, был создан вспомогательный класс ADS_tools, обращающийся к Active Directory (AD) и ищущий там кого-либо с таким email'ом. У класса есть один статический метод:
X++:
public static boolean isEmailPresentInAD(email _email, str _namingContext = '')
Первый параметр - SMTP-адрес для проверки (NB! если в поле настройки указывается несколько адресов через разделитель, "скармливать" их методу надо по одному), второй - контекст именования, который будет использоваться в LDAP-запросе для проверки. В большинстве случаев лучше оставить значение этого параметра пустым, тогда метод сам получит нужный контекст, соответствующий текущему домену по умолчанию. Искомым объектом может быть пользователь, контакт, группа и проч. В AD для пользователей и контактов могут быть заведены в т.ч. внешние SMTP-адреса, относящиеся к сторонним почтовым системам, - в этом случае проверка такого адреса пройдет успешно, но возможность доставки почты по нему не может быть гарантирована.
Изначально адреса искались в свойстве proxyAddresses объектов AD, однако, недавно я столкнулся со случаем, когда это свойство в одном домене заполнено не было (возможно, из-за "особенностей" администрирования Exchange Server'а). Чтобы обойти эту ситуацию, была добавлена также проверка свойства mail, хотя в нем может быть указан лишь один адрес, в то время как в proxyAddresses - несколько. При желании это свойство можно исключить из поискового запроса, тогда он будет выглядеть не так:
PHP код:
(&(|(objectCategory=person)(objectCategory=group))(|(proxyAddresses=SMTP:%3)(mail=%3))) 
а так:
PHP код:
(&(|(objectCategory=person)(objectCategory=group))(proxyAddresses=SMTP:%3)) 
Еще из особенностей класса:
  • поиск идет лишь в текущем домене и его поддоменах - перебор других доступных доменов из леса либо доменов, с которыми установлены доверительные отношения, не реализован;
  • используется COM, а не .NET - код писался довольно давно, зато если выкинуть упоминания InteropPermission и AifUtil, он заработает и на 3-ке;
  • свойство RunOn стандартного класса CCADOCommand переделано из Client в CalledFrom, как было в 3.0.
Вложения
Тип файла: rar ADSI-email-validator.rar (3.5 Кб, 153 просмотров)
За это сообщение автора поблагодарили: ta_and (4), oip (5), alvares (1).
Теги
active directory, email, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dax-lessons: Password style Dialogs and validate the password in Active Directory [Dynamics AX, X++] Blog bot DAX Blogs 0 07.03.2011 18:11
Pawan's Ax blog: Run AIF Without Active Directory Blog bot DAX Blogs 0 19.04.2010 11:05
kamalblogs: Running AIF without Active directory in Dynamics Ax Blog bot DAX Blogs 0 19.04.2010 09:05
dax-lessons: Active directory in Axapta Blog bot DAX Blogs 0 27.08.2007 23:00
Установка клиента через политики Active Directory rumpleteazer DAX: Администрирование 2 09.02.2006 15:08
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:18.