下面的PHP代码可以对电子邮件地址进行简单验证和强验证,简单验证验证邮件格式和主机是否存在,强验证会连接邮件服务器进行验证,需要比较长时间
/**
* PHP对Email(邮箱地址)进行强验证的代码
*
* @param
* @arrange 512-笔记网: 512Pic.com
**/
<?PHP
/*
* __construct($email) takes an email address to check
*
* simpleCheck() Tests to see if an email address is formatted correctly
* and the domain it belongs to exists,such as: gmail.com,yahoo.com
*
* strongCheck() Tests to see if an email address is valid and that the
* email actually accepts emails by actually connecting to the server.
* Note: strongCheck() can be slow
*/
class EmailValidator{
private $email = ;
private $mxhost = ;
public function __construct($email){
$this->email = $email;
$this->mxhost = $this->getMXHost();
}
public function strongCheck(){
if(filter_var($this->email,FILTER_VALIDATE_EMAIL) && $this->fConnect()){
return true;
}
return false;
}
public function simpleCheck(){
if(filter_var($this->email,FILTER_VALIDATE_EMAIL) && $this->getMXHost()){
return true;
}
return false;
}
private function fConnect(){
$fp = @fsockopen($this->mxhost,25,$errno,$errstr,5);
$ms_resp = ;
$b_server_found = false;
if($fp){
$ms_resp .= $this->send_command($fp,HELO hi);
$ms_resp .= $this->send_command($fp,MAIL FROM:<ryan@ryannaddy.com>);
$rcpt_text = $this->send_command($fp,RCPT TO:<{$this->email}>);
$ms_resp .= $rcpt_text;
if(substr($rcpt_text,3) == 250){
$b_server_found = true;
}
$ms_resp .= $this->send_command($fp,QUIT);
fclose($fp);
}
return $b_server_found;
}
private function getMXHost(){
if(!empty($this->mxhost)){
return $this->mxhost;
}
list($user,$domain) = explode(@,$this->email);
getmxrr($domain,$hosts,$weights);
$priority = mt_getrandmax();
$key = 0;
if(empty($weights)){
return false;
}
foreach($weights as $k => $v){
if($v < $priority){
$key = $k;
$priority = $v;
}
}
return $hosts[$key];
}
private function send_command($fp,$out){
fwrite($fp,$out . \r\n);
return $this->get_data($fp);
}
private function get_data($fp){
$s = ;
stream_set_timeout($fp,2);
for($i = 0; $i < 2; $i++){
$s .=fgets($fp,1024);
}
return $s;
}
}
$hosts = array(
asdfsfd@adsfasdasd.com,asdfsfd@google.com,asdf!sfd@gmail.com,asdfsfd@yahoo.com,asd^sfd@44n5o$.com,dddasdf@gamil.com
);
foreach($hosts as $host){
echo $host . \n;
$em = new EmailValidator($host);
echo ;
var_dump($em->simpleCheck());
echo ;
var_dump($em->strongCheck());
}
/*** 来自编程之家 jb51.cc(jb51.cc) ***/