milky: E-Mailadresse überprüfen ob gültig !!

Beitrag lesen

<?php

# überprüft via SMTP mittels VRFY-Kommando oder
      # durch einen angetäuschten EMail-Versand, ob die
      # Adresse von dem entsprechenden Mailserver
      # akzeptiert wird
      #

function check_email($email) {
      $result = false;

if (preg_email($email)) {

#-- email-Adresse in $user und $domain aufsplitten
         list($user, $domain) = explode('@', $email);

#-- die MX-Server für $domain bestimmen
         getmxrr($domain, $mx_servers);
            $mx_servers[] = $domain;
            foreach ($mx_servers as $smtp_server) {

#-- mit SMTP-Server verbinden
               if (! $result)
               if ($socket = fsockopen($smtp_server, 25)) {

#-- warten auf SMTP ready
                  socket_set_blocking($socket, false);
                  $loop = 0;
                  while (! preg_match('/^220[ ]/', fgets($socket, 2048)))
                  {  #-- Schleife, weil anfangs SMTP-Datemmüll kommen kann
                     if ($loop++ > 19999) { fclose($socket); break 2; }
                  }

#-- Proto
                  socket_set_blocking($socket, true);
                  socket_command($socket, "HELO www.example.com\r\n");
                  if (! ($result = preg_match('/^25/',
                      socket_command($socket, "VRFY {$user}\r\n"))))
                  {
                     socket_command($socket, "MAIL FROM:trash@example.com\r\n");
                     $result = preg_match('/^25/',
                        socket_command($socket, "RCPT TO:<{$email}>\r\n"));
                  }

#-- SMTP-Verbindung beenden
                  fputs($socket, "QUIT\r\n");
                  fclose($socket);
               }#if($socket)
            }#foreach($mx_servers)
         ##if(getmxrr)
      }#if(preg_email)

return($result);
   }

if (! function_exists("socket_command")) {
   function socket_command($socket, $cmd) {
      fputs($socket, $cmd);
      $result = fgets($socket, 2048);
//      DEBUG("$cmd$result", "SOCKETCMD_");
      return($result);
   }
   }

# --------------------------------------------------------------------

# überprüft die Schreibweise / den Aufbau der email-Adresse
      #

function preg_email($string) {
      $chars = '[-_%+&#*äöüÄÖÜßa-zA-Z0-9]+';
      if (preg_match("/^({$chars}[.]*)+@+$/i", $string)) {
         return(true);
      } else echo "NPM($string)";
   }

?>