2011-09-16 34 views
3

有什麼辦法可以檢查(通過PHP)是否有任何給定的電子郵件地址是活動的(意味着它是否被任何人打開使用&)或不是(表示它被阻止或沒有人使用/打開它,它是無效的) ?
Regards &在此先感謝。有什麼方法可以檢查,在PHP中,是否有任何電子郵件處於活動狀態?

+0

您是否在談論自己託管的電子郵件服務器或類似Google Mail? –

+0

簡答題否,電子郵件太短暫,以至於很難確認電子郵件是否存在。 – Aknosis

+0

@Lukas Knuth我正在談論的外部服務器,如谷歌,雅虎或Hotmail等 – swdeveloper

回答

0

你可以,但必須使用API​​到外部服務

有幾個電子郵件驗證API的擺在那裏,DATA8了一個。 http://www.data-8.co.uk/integr8/services/email_validation.aspx

下面是一個簡單

function IsValid($email, $level) 
{ 
    $params = array(
    "username" => "your-username", 
    "password" => "your-password", 
    "email" => $email, 
    "level" => $level, 
    "options" => $options 
); 
    $client = new SoapClient("http://webservices.data-8.co.uk/EmailValidation.asmx?WSDL"); 
    $result = $client->IsValid($params); 
    if ($result->IsValidResult->Status->Success == 0) 
    { 
    echo "Error: " . $result->IsValidResult->Status->ErrorMessage; 
    } 
    else 
    { 
    // TODO: Process method results here. 
    // Results can be extracted from the following fields: 
    // $result->IsValidResult->Result 
    // Contains a status code indicating if the email address could be validated. 
    } 
} 
+1

Mmmmm,類型,但是這隻檢查電子郵件地址的*域*是否是活動的,並且可能是該服務器上的電子郵件地址的一般存在。它不會告訴你該域上的*特定*電子郵件地址是否正在使用,用戶是否有權訪問該地址等。 –

+0

它驗證所述的電子郵件,但像您說的那樣,它絕不是100%的方式當然,「有效;根據選定的驗證級別,電子郵件地址似乎是有效的,這不是絕對保證發送到這個地址的電子郵件將被髮送和閱讀。」 –

+0

是的,我的任務是檢查用戶是否有權訪問它? – swdeveloper

3

有沒有什麼辦法來檢查(通過PHP)任何給定的電子郵件地址是否是有效的(手段是目前正在使用&任何人開)否(意味着它被封鎖或沒有人使用/打開它,它是無效的)?

可以肯定的唯一方法是將電子郵件發送到地址,而不是得到一個反彈的消息,並得到一些樣的答覆後面(如一個答案,或者用戶點擊電子郵件中的唯一鏈接,或者打開唯一網址的圖像[雖然這是皺眉,但被許多電子郵件客戶端屏蔽]或閱讀收據。但是,這些方法都不是萬無一失的,所以你絕對無法確定。

+0

+1因此,「點擊這裏驗證」類型的電子郵件鏈接。 – Herbert

2

我認爲,如果電子郵件用戶輸入有效與否你是問!如果是這種情況,那麼你應該使用nslookup對於基於UNIX的操作系統,高管的幫助..這裏是一個小功能:(我檢查,如果該域名是否正確)

function myCheckDNSRR($email) 
{ 
     list($userName, $hostName) = split("@", $email); 
$recType = ''; 
if(!empty($hostName)) { 
    if($recType == '') $recType = "MX"; 

    exec("nslookup -type=$recType $hostName", $result); 
    // check each line to find the one that starts with the host 
    // name. If it exists then the function succeeded. 

    foreach ($result as $line) { 
    if(eregi("^$hostName",$line)) { 
     return true; 
    } 
    } 
    // otherwise there was no mail handler for the domain 
    return false; 
} 
return false; 

}

+0

PHP有一個自己的函數checkdnsrr;) – NikiC

相關問題