Versie zonder preg_match (werkt met filter_var functie)

<?php
function checkmail($email){

    /* Check OS script is executed on*/
    /* Checkdnsrr Windows support from php 5.3*/
	if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' and version_compare(PHP_VERSION, '5.3.0') === -1) {
		/* PHP version doesn't support getmxrr and checkdnsrr*/
		/* Syntax control function here*/
		return filter_var($email,FILTER_VALIDATE_EMAIL) != false;
    }

     /* PHP version higher or equal to 5.3.0*/
     /* Function by Hipska @ http://www.phphulp.nl/php/scripts/11/1622/ */
     if(preg_match('#.+@(?<host>.+)#',$email,$match) > 0 and getmxrr($match['host'],$mxhosts)){
          /* Found MX records*/
          
          $valid = false;

          /* Walkt through MX records for valid*/
          while($host = next($mxhosts) and !$valid){
              /* IPv4 or IPv6 will do*/
              $valid = checkdnsrr($host, 'A') or checkdnsrr($host,'AAAA');
          }
                
           return $valid;
     }
            
     /* No valid email --> no correct host name or no MX records found*/
     return false;
}
?> 

Versie met preg_match:

<?php
function checkmail($email){

    /* Check OS script is executed on*/
    /* Checkdnsrr Windows support from php 5.3*/
    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' and version_compare(PHP_VERSION, '5.3.0') === -1) {
		/* PHP version doesn't support getmxrr and checkdnsrr*/
		/* Syntax control function here*/
		return preg_match('/^\w[-.\w]*@(\w[-._\w]*\.[a-zA-Z]{2,}.*)$/', $email);
    }

     /* PHP version higher or equal to 5.3.0*/
     /* Function by Hipska @ http://www.phphulp.nl/php/scripts/11/1622/ */
     if(preg_match('#.+@(?<host>.+)#',$email,$match) > 0 and getmxrr($match['host'],$mxhosts)){
          /* Found MX records*/
          
          $valid = false;

          /* Walkt through MX records for valid*/
          while($host = next($mxhosts) and !$valid){
              /* IPv4 or IPv6 will do*/
              $valid = checkdnsrr($host, 'A') or checkdnsrr($host,'AAAA');
          }
                
           return $valid;
     }
            
     /* No valid email --> no correct host name or no MX records found*/
     return false;
}
?> 

[b]Zelf testen[/b]
Om het zelf even te testen (zie update bij beschrijving): 

<?php

include "functies.php";

if($_SERVER['REQUEST_METHOD'] == "POST") {

	echo 'Result custom checkmail:<br />';
	echo (checkmail($_POST['email'])) ? 'valid' : 'invalid';
	
	echo '<br /><br />';
	
	echo 'Result filter_var:<br />';
	echo (is_string(filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))) ? 'valid' : 'invalid';
	
	echo '<br /><br />';
	
	echo 'Result forced preg_match:<br />';
	echo (preg_match('/^\w[-.\w]*@(\w[-._\w]*\.[a-zA-Z]{2,}.*)$/', $_POST['email'])) ? 'valid' : 'invalid';
	echo '<br /><br /><a href="javascript: history.go(-1)"class="link_orange">Klik hier</a> om terug te gaan en opnieuw te proberen';
}
else {
    echo 'Test email validation:<br /><br />
    <form method="post" action="'.$_SERVER['PHP_SELF'].'">
    Email: <input type="text" name="email">
    <input type="submit" value="verzenden" name="verzenden">
    </form>';
}
?>

Snel in elkaar geflanst..... (zorg dat je in de include de functie op een manier in je script krijgt)