Средство проверки электронной почты имени хоста Zend Framework не работает на yahoo.gr - PullRequest
0 голосов
/ 03 мая 2018

Я использую Zend Framework для отправки электронных писем. У меня есть имя хоста :: ALLOW_DNS валидатор. Сбой при попытке отправить письмо на yahoo.gr. Я получаю эту ошибку:

An error occurred
An error occurred during execution; please try again later.
Additional information:
Zend\Mail\Exception\InvalidArgumentException
File:
/var/www/file/project/vendor/zendframework/zendframework/library/Zend/Mail/Address.php:41
Message:
'yahoo.gr ' is not a valid hostname for the email address

Адрес электронной почты: smth@yahoo.gr. Есть предложения?

1 Ответ

0 голосов
/ 04 мая 2018

По вашей ошибке, единственная проблема, которую я вижу, - это пробел 'yahoo.gr' , который может / может вызвать сбой проверки.

Исправить предложение 1:

Вы должны начать использовать trim () для значения GET / POST "email".

Исправить предложение 2:

Кстати, в документации :

Проверка только локальной части

Если вам требуется Zend \ Validator \ EmailAddress для проверки только локальной части адреса электронной почты и вы хотите отключить проверку имени хоста, вы можете установить для параметра домена значение FALSE. Это заставляет Zend \ Validator \ EmailAddress не проверять часть имени узла адреса электронной почты.

$validator = new Zend\Validator\EmailAddress();
$validator->setOptions(array('domain' => FALSE));

Исправить предложение 3:

Кстати, в документации :

Проверка различных типов имен хостов

Часть имени узла электронного адреса проверяется на соответствие Zend \ Validator \ Hostname. По умолчанию принимаются только DNS-имена хостов в форме domain.com, хотя при желании вы можете принимать IP-адреса и локальные имена хостов.

Для этого вам нужно создать экземпляр Zend \ Validator \ EmailAddress, передав параметр, указывающий тип имен хостов, которые вы хотите принять. Более подробная информация включена в Zend \ Validator \ Hostname, хотя пример того, как принимать DNS и локальные имена хостов, приведен ниже:

$validator = new Zend\Validator\EmailAddress(
                    Zend\Validator\Hostname::ALLOW_DNS |
                    Zend\Validator\Hostname::ALLOW_LOCAL);
if ($validator->isValid($email)) {
    // email appears to be valid
} else {
    // email is invalid; print the reasons
    foreach ($validator->getMessages() as $message) {
        echo "$message\n";
    }
}

Ну, больше никаких предложений. Я желаю вам удачи!

Конец.

...