Zend Framework 主机名电子邮件验证器在 yahoo.gr 上失败
Zend Framework hostname Email Validator fails on yahoo.gr
我正在使用 zend 框架发送电子邮件。我有一个 Hostname::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。有什么建议吗?
从你的错误中,我能看到的唯一问题是空格 'yahoo.gr ',它 will/can 导致验证失败。
修复建议 1:
您应该开始在 GET/POST "email" 值上使用 trim()。
修复建议 2:
顺便在documentation:
只验证本地部分
如果您需要 Zend\Validator\EmailAddress 只检查电子邮件地址的本地部分,并希望禁用主机名验证,您可以将域选项设置为 FALSE。这会强制 Zend\Validator\EmailAddress 不验证电子邮件地址的主机名部分。
$validator = new Zend\Validator\EmailAddress();
$validator->setOptions(array('domain' => FALSE));
修复建议 3:
documentation 顺便说一句:
验证不同类型的主机名
电子邮件地址的主机名部分根据 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 框架发送电子邮件。我有一个 Hostname::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。有什么建议吗?
从你的错误中,我能看到的唯一问题是空格 'yahoo.gr ',它 will/can 导致验证失败。
修复建议 1:
您应该开始在 GET/POST "email" 值上使用 trim()。
修复建议 2:
顺便在documentation:
只验证本地部分
如果您需要 Zend\Validator\EmailAddress 只检查电子邮件地址的本地部分,并希望禁用主机名验证,您可以将域选项设置为 FALSE。这会强制 Zend\Validator\EmailAddress 不验证电子邮件地址的主机名部分。
$validator = new Zend\Validator\EmailAddress();
$validator->setOptions(array('domain' => FALSE));
修复建议 3:
documentation 顺便说一句:
验证不同类型的主机名
电子邮件地址的主机名部分根据 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";
}
}
好了,没有更多的建议了。祝你好运!
结束。