Проверить корректность адреса электронной почты очень просто (не только синтаксис, но и его реальное существование). Для этого можно воспользоваться компонентой clEmailValidator из библиотеки Clever Internet Suite. Напишем с ее использованием простую функцию:
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 - метод (уровень) проверки правильности адреса, их пять:
Проверка корректности с уровнем 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".
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").
Проверка корректности с уровнем 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".
Комментариев нет:
Отправить комментарий