我正在使用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。有什么建议吗?
答案 0 :(得分:3)
从您的错误中,我能看到的唯一问题是空白' yahoo.gr' 会导致验证失败。
修正建议1:
您应该在GET / POST"电子邮件"上开始使用trim()值。
修正建议2:
顺便提一下documentation:
仅验证本地部分
如果您需要Zend \ Validator \ EmailAddress仅检查电子邮件地址的本地部分,并且想要禁用主机名的验证,则可以将domain选项设置为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";
}
}
好吧,没有更多的建议。祝你好运!
结束。