Php Zend Framework主机名电子邮件验证程序在yahoo.gr上失败

Php Zend Framework主机名电子邮件验证程序在yahoo.gr上失败,php,validation,zend-framework2,zend-framework3,Php,Validation,Zend Framework2,Zend Framework3,我正在使用zend框架发送电子邮件。我有一个主机名::允许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/z

我正在使用zend框架发送电子邮件。我有一个主机名::允许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. 有什么建议吗?

从您的错误中,我看到的唯一问题是空白'yahoo.gr',它将/可能导致验证失败

修复建议1:

您应该开始在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进行验证。默认情况下,只接受domain.com形式的DNS主机名,但如果您愿意,也可以接受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";
    }
}
好吧,没有更多的建议了。祝你好运


结束。

从您的错误中,我看到的唯一问题是空格'yahoo.gr',它将/可能导致验证失败

修复建议1:

您应该开始在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进行验证。默认情况下,只接受domain.com形式的DNS主机名,但如果您愿意,也可以接受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";
    }
}
好吧,没有更多的建议了。祝你好运


结尾。

您能在使用此代码的地方添加代码吗?主机名末尾有一个空格(您可以在错误消息中看到)-这可能是导致其无效的原因。您能在使用此代码的地方添加代码吗?主机名末尾有一个空格(您可以在错误消息中看到)-这很可能是使它无效的原因。正如你和其他人所建议的,是空格解决了问题。不知道为什么我没有添加修剪在第一位。除此之外,感谢您提供的有关zend的信息!正如你和其他人所建议的,正是空格解决了问题。不知道为什么我没有添加修剪在第一位。除此之外,感谢您提供的有关zend的信息!