我使用Google Code中的SMTP验证程序来验证我的电子邮件。作为测试运行,我输入一个不存在的电子邮件:[... @ crappyCoconuts.com]但是,它不会使用我的die()
错误消息,而是抛出另外2条错误消息,告知它不会连接而域名确实没有不存在。 如何正确检查电子邮件是否存在并返回正确的消息?我知道我可以简单地压制error_reporting(0)
,但这只会隐藏问题,而不是解决它。
if (preg_match("/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i", $email)) {
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$SMTP_Validator = new SMTP_validateEmail();
$results = $SMTP_Validator->validate(array($email));
if (!$results[$email]) {
die("Your email address does not exist");
$dbh = null;
}
} else {
die("Your email address is in improper format");
$dbh = null;
}
} else {
die("Your email address is in improper format");
$dbh = null;
}
错误讯息:
Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/u313677887/public_html/smtp_validateEmail.class.php on line 154
Warning: fsockopen(): unable to connect to crappyCoconuts.com:25 (php_network_getaddresses: getaddrinfo failed: Name or service not known) in /home/u313677887/public_html/smtp_validateEmail.class.php on line 154
答案 0 :(得分:0)
您可以使用set_error_handler实现自定义错误处理程序,也可以使用@fsockopen()
而不是fsockopen()
来抑制输出警告。然后,您可以检查fsockopen()
返回的内容。
fsockopen()返回一个文件指针,该指针可以与其他文件函数一起使用(例如fgets(),fgetss(),fwrite(),fclose()和feof())。如果调用失败,则返回FALSE。
错误表示域名无效,因此电子邮件地址无效。