Search code examples
email

How to check programmatically if an email is existing or not


How to write a code to check an email is existing or not? For example [email protected], [email protected], or [email protected] all these emails do not exist in gmail, yahoo and lycos database.
enter image description here


See the screenshot. [email protected] is bad. That means it does not exist. how can i implement the same thing in my project?

javascript, jquery shell script, c or c++ are welcome. Without .net.


Solution

  • See this code i got it from web.

     class SmtpValidator {
    
        private $options = array(
                "port" => 25,
                "timeout" => 1,  // Connection timeout to remote mail server.
                "sender" => "[email protected]",
                "short_response" => false,
        );
    
        /**
         *  Override the options for those specified.
         */
        function __construct($options = null) {
            if (!empty($options)) {
                if (is_array($options)) {
                    foreach ($options as $key => $value) {
                        $this->options[$key] = $value;
                    }
                }
            }
        }
    
        /**
         *  Validate the email address via SMTP.
         *  If 'shore_response' is true, the method will return true or false;
         *  Otherwise, the entire array of useful information will be provided.
         */
        public function validate($email, $options = null) {
    
            $result = array("valid" => false);
            $errors = array();
    
            // Email address (format) validation
            if (empty($email)) {
                $errors = array("Email address is required.\n");
            } else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $errors = array("Invalid email address.\n");
            } else {
                list($username, $hostname) = split('@', $email);
                if (function_exists('getmxrr')) {
                    if (getmxrr($hostname, $mxhosts, $mxweights)) {
                        $result['mx_records'] = array_combine($mxhosts, $mxweights);
                        asort($result['mx_records']);
                    } else {
                        $errors = "No MX record found.";
                    }
                }
    
                foreach ($mxhosts as $host) {
                    $fp = @fsockopen($host, $this->options['port'], $errno, $errstr, 
                                           $this->options['timeout']);
                    if ($fp) {
                        $data = fgets($fp);
                        $code = substr($data, 0, 3);
                        if($code == '220') {
                            $sender_domain = split('@', $this->options['sender']);
                            fwrite($fp, "HELO {$sender_domain}\r\n");
                            fread($fp, 4096);
                            fwrite($fp, "MAIL FROM: <{$this->options['sender']}>\r\n");
                            fgets($fp);
                            fwrite($fp, "RCPT TO:<{$email}>\r\n");
                            $data = fgets($fp);
                            $code = substr($data, 0, 3);
                            $result['response'] = array("code" => $code, "data" => $data);
                            fwrite($fp, "quit\r\n");
                            fclose($fp);
                            switch ($code) {
                                case "250":  // We're good, so exit out of foreach loop
                                case "421":  // Too many SMTP connections
                                case "450":
                                case "451":  // Graylisted
                                case "452":
                                    $result['valid'] = true;
                                    break 2;  // Assume 4xx return code is valid.
                                default:
                                    $errors[] = "({$host}) RCPT TO: {$code}: {$data}\n";
                            }
                        } else {
                            $errors[] = "MTA Error: (Stream: {$data})\n";
                        }
                    } else {
                        $errors[] = "{$errno}: $errstr\n";
                    }
                }
            }
            if (!empty($errors)) {
                $result['errors'] = $errors;
            }
            return ($this->options['short_response']) ? $result['valid'] : $result;
        }
    }