Задача
При разработке системы оповещения о задачах и событиях по e-mail понадобилась проверка email-адреса, собственно разрабатываем.
Решение
Для решения задачи можно использовать регулярные выражения, для этого часто используют COM-объекты, но мы пишем кросс-платформенный вариант и нам это не подойдет.
В адресе должна быть @ и точка после нее, иначе адрес не верен. Если эти условия соблюдаются, то идем дальше и проверяем все символы на допустимость. Если снова все ОК, то адрес валидный.
Метод не самый быстродейственный, но работает не зависимо от ОС. Так же есть вариант проверки через регулярные выражения в запросе если мне не изменяет память, опишу его позже.
Функция АдресЭлектроннойПочтыВалиден(АдресЭП) // Проверим наличие в адресе @ ПозицияСобаки = Найти(АдресЭП, "@"); Если Не ПозицияСобаки = 0 Тогда // и наличие точки после собаки Если Найти(Сред(АдресЭП, ПозицияСобаки + 1), ".") = 0 Тогда Возврат Ложь; КонецЕсли; Иначе Возврат Ложь; КонецЕсли; // Проверим адрес на допустимые символы ДопустимыеСимволы = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЪЭЮЯ |ABCDEFGHIJKLMNOPQRSTUVWXYZ |0123456789 |._-@"; Позиция = 1; Пока Позиция <= СтрДлина(АдресЭП) Цикл ТекущийСимвол = ВРег(Сред(АдресЭП, Позиция, 1)); Если Найти(ДопустимыеСимволы, ТекущийСимвол) = 0 Тогда Возврат Ложь; КонецЕсли; Позиция = Позиция + 1; КонецЦикла; Возврат Истина; КонецФункции