嗨,我已经使用了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();