当检查雅虎域名的电子邮件地址时,它会在php中给出通知


when check email address of yahoo domain it gives notice in php

嗨,我已经使用了php脚本的电子邮件验证。代码正在工作,如果我检查gmail域的电子邮件地址,它给出了正确的结果,并检查电子邮件是有效的或无效的电子邮件。但是当我检查雅虎域的电子邮件地址时,它给出了错误通知:fwrite():发送6字节失败,errno=10053已建立的连接被您的主机中的软件中止。我想避开雅虎地址的通知。

<div class="container" style="width:80%;margin:0 auto;">
  <h3>Email Validation Script</h3>
  <div class="form-group" >
    <form method="post">
    <label for="comment">Email Address</label>
<textarea class="form-control"  name="em" id="" cols="30" rows="10" placeholder="please enter email addresses"></textarea >
<br>
<input type="submit" name="submit" value="Check email addresses" class="btn btn-primary">
</form>
</div>
</div>

require_once('smtp_validateEmail.class.php');
if(isset($_POST['submit'])){
$em= $_POST['em'];
$emails2=substr(strrchr($em, "@"), 1);
//echo $emails2;
// if($emails2 == 'yahoo.com'){
//  echo "not valid";
// }
// else{
//  echo "valid";
// }
$emails1 = implode(",", preg_split("/['s]+/", $em));
$emails = explode(',',$emails1);
//$emails = array('dave1@hmgamerica.com', 'babita@gmail.com');
// an optional sender
$sender = 'user@yourdomain.com';
// instantiate the class
$SMTP_Validator = new SMTP_validateEmail();
// turn on debugging if you want to view the SMTP transaction
$SMTP_Validator->debug = true;
// do the validation
$results = $SMTP_Validator->validate($emails, $sender);
echo "<div class='container' style='width:77%;margin:0 auto;background:#F0F0F0;'>";
    echo "<h3>List Of Emails</h3>";
// view results
foreach($results as $email=>$result) {
    if ($result) {
   echo "<div  style='color:green';>
     The email address  $email is  valid
     </div>";
     echo "<br>"; 
    //mail($email, 'Confirm Email', 'Please reply to this email to confirm', 'From:'.$sender."'r'n"); // send email
  } else {
    // echo "not valid";
    echo "<div style='color:red';>
     The email address  $email is invalid
     </div>";
     echo "<br>";
  }
}
echo "</div>";
}

?>错误是fwrite($this->sock, $msg."'r'n");-

function send($msg) {
  fwrite($this->sock, $msg."'r'n");
  $reply = fread($this->sock, 2082);
 $this->debug(">>>'n$msg'n");
 $this->debug("<<<'n$reply");
  return $reply;
 }

您查找错误代码(errno 10053)了吗?

提示您在Windows上,套接字正在终止。

可能:已建立的连接被您的主机Windows 8.1中的软件终止

您是否尝试在库中只验证一个yahoo地址?

<?php 
$SMTP_Validator = new SMTP_validateEmail();
$SMTP_Validator->debug = true;
$results = $SMTP_Validator->validate(array('foo@yahoo.com'));
var_dump($results);

您可能有一些套接字问题。库代码表明,在套接字创建失败时,将跳过该域。因此,就好像套接字已经创建,但稍后出现问题。

在单独的文件中尝试以下代码,看看在连接到yahoo SMTP服务器时是否出现任何错误:

<?php
if(getmxrr('yahoo.com', $mxhosts)) {
  $sock = fsockopen ($mxhosts[0], 25, $errno , $errstr);
  if(! $sock) {
      var_dump($errno);
      var_dump($errstr);
  } else {
      echo 'Socket created.';
  }
}

您还可以临时替换lib的fwrite行(并且只测试一个yahoo地址)。这可能表示超时。

$meta = stream_get_meta_data($this->sock);
var_dump($meta);
die();