Проверка корректности адреса электронной почты
Function ValidateMail(const sAddress: String): Boolean;
Var
clEV: TclEmailValidator;
begin
clEV := TclEmailValidator.Create(nil);
Try
clEV.ValidationLevel := vlMailbox;
clEV.DnsServer := ‘8.8.8.8’;
Result := clEV.Validate(sAddress) = vrMailboxOk
Finally
clEV.Free;
End;
end;
Я задал всего лишь два свойства clEmailValidator (остальные можно пропустить). Первое и основное, это ValidationLevel — метод (уровень) проверки правильности адреса, их пять:
- vlBlacklist — проверка на вхождение адреса в ваш «чёрный список» (чёрный список хранится у clEmailValidator в свойстве BlackList типа TStrings);
- vlSyntax — проверка синтаксиса (проверяется при помощи шаблона RegEx);
- vlDomain — проверка существования домена (проверяется запросом DNS-информации для почтового домена);
- vlSmtp — проверка доступности почтового сервера (проверяется попыткой установления SMTP-соединения с хостом, указанным в MX-записи DNS);
- vlMailbox — проверка существования почтового ящика (проверяется попыткой отправить SMTP-запрос почтовому серверу с указанием проверяемого адреса в поле «RCPT TO»).
Я расположил эти значения в списке по очереди (в порядке) выполнения. Т.е. если вы хотите проверить существование домена, то clEmailValidator выполнит проверки нижнего уровня — сначала на вхождение в чёрный список, потом проверку синтаксиса адреса, а уж затем проверку существования домена.
Проверка корректности с уровнем vlDomain и выше требует активного internet-подключения и у clEmailValidator необходимо задать значение свойству DnsServer. DnsServer — это IP-адрес name-сервера вашего internet-провайдера. В примере выше я использовал адрес Google Public DNS.
При желании для уровня vlSmtp (и выше) можно задать имя которое используется в команде «SMTP HELO» (свойство HostName). А для уровня vlMailbox можно задать еще и адрес электронной почты, который используется в SMTP-запросе свойство EmailFrom). Я написал «при желании», т.к. у меня проверка корректности работает и без них.
Метод Validate возвращает уровень, до которого проверка адреса электронной почты выполнилась корректно (vrBlacklistOk, vrSyntaxOk, vrDomainOk, vrSmtpOk, vrMailboxOk) или, если вы совсем ерунду подсунули clEmailValidator, то «vrInvalid».