PHP 驗證 Email -檢查 DNS 的 MX 是否有通

驗證 Email 通常最簡單的就是判斷 '@', 要再準確一點, 就去判斷一下 DNS 的 MX 有沒有設囉~ 🙂

dig mx DOMAIN_NAME

這樣就可以列出 DOMAIN_NAME 的 MX 是設怎麼樣~

那 PHP 的程式要判斷 MX 有沒有設, 就用 checkdnsrr 的 function 來解決~

程式大概如下:

$email = '123@DOMAIN_NAME';
list(, $mailDomain) = split('@', $email); // 取出 DOMAIN_NAME
var_dump(checkdnsrr($mailDomain, 'MX')); // true => Email 是正確的, 反之則是 false.

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈PHP 驗證 Email -檢查 DNS 的 MX 是否有通〉中有 4 則留言

  1. 試用這個? (取自 php.net)
    if(!function_exists('checkdnsrr')){
    function checkdnsrr($host, $type=''){
    if(!empty($host)){
    $type = (empty($type)) ? 'MX' : $type;
    exec('nslookup -type='.$type.' '.escapeshellcmd($host), $result);
    $it = new ArrayIterator($result);
    foreach(new RegexIterator($it, '~^'.$host.'~', RegexIterator::GET_MATCH) as $result){
    if($result){
    return true;
    }
    }
    }
    return false;
    }
    }

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料