Zoiets?Heeft iemand een php script om fake email adressen te filteren uit een nieuwsbrief csv bestand. Het bestand heeft slechts 1 kolom ' Het emailaders ' .
function checkmail($mail)
{
// http://www.phphulp.nl/php/scripts/8/191/
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = "hoi";
return $valid;
}
Met Shopify maak je zelf je eigen webwinkel dankzij meer dan honderd thema’s en de complete appstore. Shopify sluit ook goed aan op dropshippers. De software is technisch volledig SEO-geoptimaliseerd en biedt alle sociale media-integraties. Meer info op Shopify.com.
Dan ga je adressen afkeuren die mogelijk wel geldig zijn. Volgens de RFC is een MX record niet verplicht, al bestaat ie in 99,9% van de gevallen wel. Als er geen MX is, dan wordt het eerste A record gebruikt, en als daar inderdaad een mailserver luitstert, dan werkt alles normaal.Bijna goed, alleen zou ik getmxrr() toevoegen voor een controle op records voor Mail eXchange (MX).
Deze regex gaat in de praktijk trouwens ook niet altijd goed. Er zijn mensen met een e-mailadres waar het laatste teken van de gebruikersnaam een _ is. Dus user_@domain.tld. Deze komt niet door deze controle maar wordt wel gebruikt (en werkt ook). Of het volgens de RFC mag heb ik niet gecontroleerd.Code: Selecteer alleseregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-
<?php
/**
* E-mailadres valideren
*
* @author Ward van der Put <php@pc-boeken.nl>
* @license http://creativecommons.org/licenses/by/3.0/
* @version 4
*
* @param string $str
* @return boolean
*/
function is_emailadres($str)
{
/**
* Een e-mailadres moet een alfanumerieke string zijn.
*/
if (!is_string($str) or is_numeric($str)) {
return false;
}
/**
* Een e-mailadres kan niet korter zijn dan 7 karakters
* en mag niet langer zijn dan 256 karakters.
*/
if ((strlen($str) < 7) or (strlen($str) > 256)) {
return false;
}
/**
* E-mailadres valideren met een inputfilter
*
* @link http://www.php.net/manual/en/function.filter-var.php
*/
if (!filter_var($str, FILTER_VALIDATE_EMAIL)) {
return false;
}
/**
* E-mailadres valideren met een reguliere expressie
*
* Deze reguliere expressie accepteert lange TLD's van 6 karakters
* (bijvoorbeeld .museum) en nieuwe geo TLD's van 7 of 8 karakters
* (bijvoorbeeld .ottawa, .hamburg en .saarland).
*
* @link http://wiki.phpfreakz.nl/Invoer_validatie
* @link http://www.php.net/manual/en/function.preg-match.php
*/
if (!preg_match('#^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9]?[a-z0-9\-]+\.([a-z]{2,8})$#i', $str)) {
return false;
}
/**
* E-mailadres uitsplitsen in een geïndexeerde array.
*/
$aEmailadres = explode('@', $str);
/**
* Het e-mailadres moet nu uit twee onderdelen bestaan:
* een lokale naam en een hostnaam.
*/
if (count($aEmailadres) != 2) {
return false;
}
/**
* De lokale naam mag niet langer zijn dan 64 karakters.
*/
if (strlen($aEmailadres[0]) > 64) {
return false;
}
/**
* DNS voor SMTP
*
* Als er een MX-record wordt gevonden, dan is de hostnaam in het
* e-mailadres bruikbaar voor mail exchange (MX). Wordt er geen
* MX-record gevonden, dan moet de hostnaam zelf zijn te vinden met
* een DNS-lookup.
*
* @link http://www.faqs.org/rfcs/rfc2821
* @link http://www.php.net/manual/en/function.getmxrr.php
* @link http://www.php.net/manual/en/function.gethostbyname.php
*/
if (getmxrr($aEmailadres[1], &$aMXhosts)) {
return true;
} else {
$sIPadres = gethostbyname($aEmailadres[1]);
if ($sIPadres == $aEmailadres[1]) {
return false;
} else {
return true;
}
}
}
Dan heb je count($aEmailadres) === 3 met drie array-elementen en keurt if (count($aEmailadres) != 2) { return false; } het e-mailadres af als ongeldig.Wat gebeurt er als je het email adres: " hallo@ik@jij.wij " zou hebben ?
Mét dubbele aanhalingstekens is het e-mailadres wél geldig:Invalid email addresses
• Abc.example.com (an @ character must separate the local and domain parts)
• A@b@c@example.com (only one @ is allowed outside quotation marks)
[...]
<form action="#" method="post">
Email:<input type="email" name="Email" required placeholder="iemand@shopaunt.com">
</form>
"google" is een valide hostname, net als bijvoorbeeld localhost.wauw weer eens wat nieuws.
Zal toch echt niet werken zonder tld.