2011-09-16 13 views
3

特定の電子メールアドレスがアクティブかどうか(つまり、誰でも使用していることを意味していますか?&)、ブロックされていないか、誰も使用していない/開いていないことを示します。 ?
よろしくお願いいたします。&ありがとうございます。PHPで、電子メールが有効かどうかを確認する方法はありますか?

+0

あなた自身をホストしているEメールサーバーや、Google Mailなどについてお話ししていますか? –

+0

短い答えいいえ、電子メールは過渡的なので、電子メールが存在するかどうかを確認することは非常に困難です。 – Aknosis

+0

@ Lukas Knuth私はGoogle、Yahoo、Hotmailなどの外部サーバーについて語っています – swdeveloper

答えて

0

あなたはそこにいくつかの電子メールの検証APIのアウトがある

外部サービスへのAPIを使用することができますが、DATA8は1つを得ました。ここで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

これは決まった電子メールを検証しますが、確かに、 "有効:選択された検証レベルによると、電子メールアドレスは有効であるように見えますが、これはこのアドレスに送信された電子メールが配信され、読み込まれるという絶対的な保証ではありません。 –

+0

はい、私の仕事は、ユーザーがアクセス権を持っているかどうかをチェックすることです。 – swdeveloper

3

(PHP経由)をチェックする方法があります任意のメールアドレスが有効であるかどうかそれは(意味、それは現在誰によって開か&を使用している)か否かは、(それがブロックされていることや、誰が使用していない/それを開きます、それは非アクティブです)?

必ずする唯一の方法は、バウンスメッセージを取得していない、アドレスに電子メールを送信し、その答えのような返信のいくつかの種類(、またはユーザーを取得することです電子メール内の一意のリンクをクリックするか、一意のURLが開かれているイメージ(これは多くの電子メールクライアントによってブロックされています。これらの方法のどれも絶対確実ではありませんので、100%確かめることはできません。

+0

+1電子メールの "ここをクリックして確認する"タイプのリンクです。 – Herbert

2

です!これが事実であるならば、あなたは、execの助けを借りて、UNIXベースのオペレーティング・システム用のnslookupを使用する必要があります..ここでそのための小さな関数である:(ドメインが正しいかではない場合、私はチェックしています)

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

関連する問題