Issue
I wonder if there is a PHP solution (or other) to test the validity of an email address?Solution
Try this:function validate_email($email){ $mailparts=explode("@",$email); $hostname = $mailparts[1]; // validate email address syntax $exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$"; $b_valid_syntax=eregi($exp, $email); // get mx addresses by getmxrr $b_mx_avail=getmxrr( $hostname, $mx_records, $mx_weight ); $b_server_found=0; if($b_valid_syntax && $b_mx_avail){ // copy mx records and weight into array $mxs $mxs=array(); for($i=0;$i<count($mx_records);$i++){ $em1 = array_pop($mx_weight); $em2 = array_pop($mx_records); $mxs[$em1]=$em2; } // sort array mxs to get servers with highest prio ksort ($mxs, SORT_NUMERIC ); reset ($mxs); while (list ($mx_weight, $mx_host) = each ($mxs) ) { if($b_server_found == 0){ //try connection on port 25 $fp = @fsockopen($mx_host,25, $errno, $errstr, 2); if($fp){ $ms_resp=""; // say HELO to mailserver $ms_resp.=send_command($fp, "HELO microsoft.com"); // initialize sending mail $ms_resp.=send_command($fp, "MAIL FROM:<support@microsoft.com>"); // try receipent address, will return 250 when ok.. $rcpt_text=send_command($fp, "RCPT TO:<".$email.">"); $ms_resp.=$rcpt_text; if(substr( $rcpt_text, 0, 3) == "250") $b_server_found=1; // quit mail server connection $ms_resp.=send_command($fp, "QUIT"); fclose($fp); } } } } return $b_server_found; } function send_command($fp, $out){ fwrite($fp, $out . "\r\n"); return get_data($fp); } function get_data($fp){ $s=""; stream_set_timeout($fp, 2); for($i=0;$i<2;$i++) $s.=fgets($fp, 1024); return $s; } // support windows platforms if (!function_exists ('getmxrr') ) { function getmxrr($hostname, &$mxhosts, &$mxweight) { if (!is_array ($mxhosts) ) { $mxhosts = array (); } if (!empty ($hostname) ) { $output = ""; @exec ("nslookup.exe -type=MX $hostname.", $output); $imx=-1; foreach ($output as $line) { $imx++; $parts = ""; if (preg_match ("/^$hostname\tMX preference = ([0-9]+), mail exchanger = (.*)$/", $line, $parts) ) { $mxweight[$imx] = $parts[1]; $mxhosts[$imx] = $parts[2]; } } return ($imx!=-1); } return false; } } et l'appelle toujours : Function ControleContact($email,$nomorganization,$service,$fonction){ $msg=""; $email = trim($email); if(empty($nomorganization)): $msg .= "Le champs <B>Nom de l'organization</B> est obligatoire<BR>"; endif; if(!is_string($nomorganization)) $msg .= "Le champs <B>Nom de l'organization</B> doit être une chaine de caractére<BR>"; if(empty($service)) $msg .= "Au moins une case <B>service</B> doit être cochée<BR>"; if(empty($fonction)) $msg .= "Une <B>fonction</B> doit être séléctionnée<BR>"; if(empty($email)) $msg .="Le champ <B>email</B> est obligatoire<BR>"; elseif(!ereg("^(.+)@(.+)\\.(.+)$",$email)) $msg .="Le champ <B>email</B> est obligatoire 22<BR>"; elseif(validate_email($email) == 0) { echo 'Invalid email address!'; $msg .='Invalid email address!'; } else { echo 'Email address is valid'; } return ($msg); }
0 comments:
Post a Comment