0

https://github.com/zytzagoo/smtp-validate-email/blob/master/smtp-validate-email.php を変更してメールアドレスの存在を確認


<?php

require('smtp-validate-email.php');

$from = 'removed'; // for SMTP FROM:<> command
$con = mysql_connect('localhost', 'root', '');
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db('mailverf', $con);

$sql="SELECT * 
FROM  `mailvalid` where statut=0 limit 0,30";

$result = mysql_query($sql);
if($result === FALSE) {
    die(mysql_error()); 

    while($row = mysql_fetch_array($result))
    {

        $email = $row['mail'];

        $validator = new SMTP_Validate_Email($email, $from);
        $smtp_results = $validator->validate();
        $mail=str_replace(' ','',$row['mail']);
        // var_dump($smtp_results);
        if($smtp_results[$email])
        {
            $sql1="UPDATE  mailvalid SET  statut = 1 WHERE  id =".$row['id']."";
            mysql_query($sql1) or  die(mysql_error());
        }
        else
        {

            $sql2="INSERT INTO mailnonvalid (mail) VALUES ('".$row['mail']."')";
            mysql_query($sql2) or  die(mysql_error());

            $sql3="DELETE FROM mailvalid WHERE id = ".$row['id']."";
            mysql_query($sql3) or  die(mysql_error());
        }
        // var_dump($email);
        echo $row['id'].'</br>';
    } 

    $sql="SELECT * 
    FROM  `mailvalid` where statut=0 limit 0,30";

    $result = mysql_query($sql);
    if($result === FALSE) {
        die(mysql_error()); 
    }

    if($row = mysql_fetch_array($result)){
        echo '<script>window.location.reload(); </script>';}else {echo 'end';}
    }
}

?>

しばらくすると次のエラー メッセージが表示されることを除けば、問題なく動作します。

Fatal error: Uncaught exception 'SMTP_Validate_Email_Exception_Timeout' with message 'Timed out in recv' in C: \ xampp \ htdocs \ verif \ smtp-validate-email.php: 626
Stack trace:
# 0 C: \ xampp \ htdocs \ verif \ smtp -validate-email.php (650) SMTP_Validate_Email-> recv (3)
# 1 C: \ xampp \ htdocs \ verif \ smtp-validate-email.php (554) SMTP_Validate_Email-> expect (Array, 3)
# 2 C: \ xampp \ htdocs \ verif \ smtp-validate-email.php (311) SMTP_Validate_Email-> rset ()
# 3 C: \ xampp \ htdocs \ verif \ index.php (28): SMTP_Validate_Email-> validate ()
# 4 {main} thrown in C: \ xampp \ htdocs \ verif \ smtp-validate-email.php on line 626
4

2 に答える 2

0

次の理由により、無視することをお勧めします。

  1. smtp-validate-email クラスは複数の電子メール アドレスを受け取ることができ、それらのいずれかがエラーを引き起こす可能性があります。
  2. 1 つのドメインに複数の smtp サーバーが存在する場合 (たとえば、gmail アドレスは複数の SMTP サーバーを参照する場合があります - 私は約 8 つになっていますか?)をチェックします)。

クラス自体で修正する必要があります...

于 2014-12-14T06:44:53.517 に答える