KOMPOOS.NL

valideer email (smtp)

home » php » validate-email-smtp.html

sitemap


test de email-validatie

Vul een geldig email-adres in

Naam ontvanger
Email ontvanger

Naam verzender
Email verzender

Onderwerp

bericht

 

uitleg email validatie (vóór verzending)

Voordat je een email vanaf jouw website verstuurt is het handig om te "checken" of het email-address wel valide is. Neem integraal de broncode over van deze pagina, en wijzig alles naar eigen inzicht. Om ellende (lees: spam) te voorkomen is op déze pagina het één en ander uitgeschakeld.

integraal de broncode van deze email-check pagina


<?php
if (isset($_POST['submit']))
{
error_reporting(0); 
$email = $_POST['naar_emailadres'];
$kijk_de_tekens_na = filter_var($email, FILTER_SANITIZE_EMAIL); 
$foute_tekens = 0;
if($email == $kijk_de_tekens_na)
{
$sender = 'webmaster@jouwdomein.nl';
$SMTP_Validator = new SMTP_validateEmail();
$SMTP_Validator->debug = false;
$results = $SMTP_Validator->validate(array($email), $sender);
}
else{$foute_tekens=1;$results=false;}
}
class SMTP_validateEmail {
var $sock;
var $user;
var $domain;
var $domains;
var $port = 25;
var $max_conn_time = 30;
var $max_read_time = 5;
var $from_user = 'user';
var $from_domain = 'localhost';
var $nameservers = array('192.168.0.1');
var $debug = false;
function SMTP_validateEmail($emails = false, $sender = false) {
if ($emails) {
$this->setEmails($emails);
}
if ($sender) {
$this->setSenderEmail($sender);
}
}
function _parseEmail($email) {
$parts = explode('@', $email);
$domain = array_pop($parts);
$user= implode('@', $parts);
return array($user, $domain);
}
function setEmails($emails) {
foreach($emails as $email) {
list($user, $domain) = $this->_parseEmail($email);
if (!isset($this->domains[$domain])) {
$this->domains[$domain] = array();
}
$this->domains[$domain][] = $user;
}
}
function setSenderEmail($email) {
$parts = $this->_parseEmail($email);
$this->from_user = $parts[0];
$this->from_domain = $parts[1];
}
function validate($emails = false, $sender = false) {
$results = array();
if ($emails) {
$this->setEmails($emails);
}
if ($sender) {
$this->setSenderEmail($sender);
}
foreach($this->domains as $domain=>$users) {
$mxs = array();
$this->domain = $domain;
list($hosts, $mxweights) = $this->queryMX($domain);
for($n=0; $n < count($hosts); $n++){
$mxs[$hosts[$n]] = $mxweights[$n];
}
asort($mxs);
$mxs[$this->domain] = 0;
$this->debug(print_r($mxs, 1));
$timeout = $this->max_conn_time;
while(list($host) = each($mxs)) {
$this->debug("try $host:$this->port\n");
if ($this->sock = fsockopen($host, $this->port, $errno, $errstr, (float) $timeout)) {
stream_set_timeout($this->sock, $this->max_read_time);
break;
}
}
if ($this->sock) {
$reply = fread($this->sock, 2082);
$this->debug("<<<\n$reply");
preg_match('/^([0-9]{3}) /ims', $reply, $matches);
$code = isset($matches[1]) ? $matches[1] : '';
if($code != '220') {
foreach($users as $user) {
$results[$user.'@'.$domain] = false;
}
continue;
}
$this->send("HELO ".$this->from_domain);
$this->send("MAIL FROM: <".$this->from_user.'@'.$this->from_domain.">");
foreach($users as $user) {
$reply = $this->send("RCPT TO: <".$user.'@'.$domain.">");
preg_match('/^([0-9]{3}) /ims', $reply, $matches);
$code = isset($matches[1]) ? $matches[1] : '';
if ($code == '250') {
$results[$user.'@'.$domain] = true;
} elseif ($code == '451' || $code == '452') {
$results[$user.'@'.$domain] = true;
} else {
$results[$user.'@'.$domain] = false;
}
}
$this->send("RSET");
$this->send("quit");
fclose($this->sock);
}
}
return $results;
}
function send($msg) {
fwrite($this->sock, $msg."\r\n");
$reply = fread($this->sock, 2082);
$this->debug(">>>\n$msg\n");
$this->debug("<<<\n$reply");
return $reply;
}
function queryMX($domain) {
$hosts = array();
$mxweights = array();
if (function_exists('getmxrr')) {
getmxrr($domain, $hosts, $mxweights);
} else {
require_once 'Net/DNS.php';
$resolver = new Net_DNS_Resolver();
$resolver->debug = $this->debug;
$resolver->nameservers = $this->nameservers;
$resp = $resolver->query($domain, 'MX');
if ($resp) {
foreach($resp->answer as $answer) {
$hosts[] = $answer->exchange;
$mxweights[] = $answer->preference;
}
}
}
return array($hosts, $mxweights);
}
function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function debug($str) {
if ($this->debug) {
echo '<pre>'.htmlentities($str).'</pre>';
}
}
}
?>
<!DOCTYPE html><html lang="nl">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>validate email SMTP</title>
<meta name="keywords" content="validate,email" />
<meta name="description" content="valideer email voordat je die verzendt. multi-browser manier om emails (SMTP) te valideren." />
<meta name="author" content="Bobik" />
<meta name="robots" content="noimageclick" />
<style type="text/css">
        form{
                margin-left:100px}
        .uitlijnen_validate{
                width:150px;
                float:left}
        textarea,input{
                padding:4px}
</style>
</head>
<body style="font-family:sans-serif">
<h1>KOMPOOS.NL</h1>
<h2>valideer email (smtp)</h2>
<h3><a href="/">home</a> » <a href="/php/">php</a> » <a href="/php/validate-email-smtp.html">validate-email-smtp.html</a></h3>
<p><strong><em><a href="/site-map.html">sitemap</a></em></strong></p>
<hr />
<h4>test de email-validatie</h4>
<?php 
setlocale(LC_ALL,'nl_NL');
if (isset($_POST['submit'])){
        echo 'email-adres '.$_POST['naar_emailadres'].' is '.($results[$email] ? 'geldig' : 'ongeldig')."<br>"."\n"; 

if($foute_tekens==0){
        if($results){echo "bericht verzonden ".strftime("%A, %e %B %Y - %H:%M",time());}else{echo "bericht niet verzonden";}
        }else {echo "verkeerde tekens ingevoerd";}
}else {echo "Vul een geldig email-adres in<br><br>";}
?>
<?php
if (isset($_POST['submit']))
{
if($results){
    $email_ontvanger = $_POST['naar_emailadres'];
    $naam_ontvanger = $_POST['naar_naam'];
    $naam_verzender = $_POST['van_naam'];
    $email_verzender = $_POST['van_emailadres'];
    $onderwerp = $_POST['onderwerp'];
    $bericht_verzender = $_POST['bericht_verzender'];
    $headers = "From: ".$naam_verzender." <".$email_verzender.">\r\n";
    $bericht = "
Beste ".$naam_ontvanger.",

".$naam_verzender." heeft jou het hieronder-staande berichtje gestuurd.

".$bericht_verzender."

mvg,
bobik
    ";
    mail($email_ontvanger, $onderwerp, $bericht, $headers);
}
}
?>
<form action="" method="post">
        <span class="uitlijnen_validate">Naam ontvanger</span><input type="text" name="naar_naam"><br />
        <span class="uitlijnen_validate">Email ontvanger</span> <input type="text" name="naar_emailadres"><br /><br />
        <span class="uitlijnen_validate">Naam verzender</span> <input type="text" name="van_naam"><br />
        <span class="uitlijnen_validate">Email verzender</span> <input type="text" name="van_emailadres"><br /><br />
        <span class="uitlijnen_validate">Onderwerp</span> <input type="text" name="onderwerp"><br /><br />
        <span class="uitlijnen_validate">bericht</span>
        <textarea name="bericht_verzender"></textarea>
        <br /><br />
        <span class="uitlijnen_validate">&nbsp;</span><input type="submit" name="submit" value="versturen">
</form>
<h4>uitleg email validatie (vóór verzending)</h4>
<p>Voordat je een email vanaf jouw website verstuurt is het 
handig om te "checken" of het email-address wel valide is. 
Neem integraal de broncode over van deze pagina, en 
wijzig alles naar eigen inzicht. Om ellende (lees: spam) te voorkomen is op déze 
pagina het één en ander uitgeschakeld. </p>
<h4>integraal de broncode van deze email-check pagina</h4>
<pre><code>
</code></pre>
<h5>Gebruik voor alle voorbeelden op de http://kompoos.nl een <a href="/manuals/html5/html5.html">valide html5 pagina</a>.</h5>
</body></html>
Gebruik voor alle voorbeelden op de http://kompoos.nl een valide html5 pagina.