Current File : //bin/validate_outgoing_emailid.php
<?php

function validate_email($email)
{
	$email=strtolower($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=preg_match($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 hostingraja.in");
                    // initialize sending mail
                    $ms_resp.=send_command($fp, "MAIL FROM: <support@hostingraja.in>");
                    // 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;
    }
}
$email = $argv[1];
if(validate_email($email) == 0) 
{
    echo 'invalid';
}
else 
{
    echo 'valid';
}
?>