# EmailAddress - Проверка email адреса

Валидатор EmailAddress позволяет выполнить различные проверки email адреса.\
Валидатор сначала разбивает адрес электронной почты на local-part\@hostname и пытается сопоставить их с известными спецификациями для адресов электронной почты и имен хостов.

### Поддерживаемые параметры

* **allow**: Определяет, какой тип доменных имен принимает валидатор. Эта опция используется вместе с опцией hostnameValidator для установки валидатора имени хоста. Возможные значения этой опции определены в константах ALLOW\_ \* валидатора Hostname:
  * **ALLOW\_DNS**: (по умолчанию) Разрешает доменные имена (например example.com)
  * **ALLOW\_IP**: Разрешает IP адреса.
  * **ALLOW\_LOCAL**: Разрешает локальные домены такие как localhost или [www.localdomain](http://www.localdomain)
  * **ALLOW\_URI**: Разрешает имена хостов в универсальном синтаксисе URI. См. [RFC 3986](https://www.ietf.org/rfc/rfc3986.txt)
  * **ALLOW\_ALL**: Разрешить все типы хостов.
* **useDeepMxCheck**: Указывает валидатору на необходимость усиленной проверки MX записей домена. Если для этого параметра установлено значение true, то в дополнение к записям MX также используются записи A, A6 и AAAA для проверки того, принимает ли сервер электронную почту. Эта опция по умолчанию имеет значение false.
* **useDomainCheck**: Определяет, должна ли быть проверена часть домена. Если для этого параметра установлено значение false, будет проверяться только локальная часть адреса электронной почты. В этом случае валидатор имени хоста не будет вызван. Эта опция по умолчанию имеет значение true.
* **hostnameValidator**: Задает экземпляр объекта валидатора имени хоста, с помощью которого будет проверяться доменная часть адреса электронной почты.
* **useMxCheck**: Определяет, должны ли быть обнаружены записи MX с сервера. Если для этого параметра задано значение true, то MX-записи используются для проверки того, принимает ли сервер электронную почту или нет. Эта опция по умолчанию имеет значение false.

### Пример использования

Рассмотрим наиболее распространенный пример, которого скорее всего вам будет достаточно. Этот пример проверяет существование домена и возможность принимать email. Т.е. выполняется максимально возможная проверка. Она пропустит только точно существующий домен с MX записями.

```php
// Массив полей и значений
$data = [
    'test' => 'info@johncms.com',
];

// Настройки валидатора
$rules = [
    'test' => [
        'EmailAddress'   => [
            'allow'          => Laminas\Validator\Hostname::ALLOW_DNS,
            'useMxCheck'     => true,
            'useDeepMxCheck' => true,
        ],
    ],
];

// Валидация
$validator = new \Johncms\Validator\Validator($data, $rules);
if ($validator->isValid()) {
    echo 'OK';
} else {
    d($validator->getErrors());
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.johncms.com/9.7/obshie-svedeniya/validaciya/emailaddress-proverka-email-adresa.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
