亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

一個低調有內涵的E-mail驗證類!

2024-04-25 20:31:48
字體:
來源:轉載
供稿:網友

這個類可以用來檢查電子郵件是否有效使用SMTP協議。

它可以連接到由地址的域名來驗證的MX記錄中定義的SMTP服務器。

類模擬消息的傳遞,以查看是否在給定的收件人地址被接受為有效。

example.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Sample</title>

</head>

<body>

<?php

include_once 'class.verifyEmail.php';

$email = 'verify@codepearl.com';

$vmail = new verifyEmail();

if ($vmail->check($email)) {

echo 'email &lt;' . $email . '&gt; exist!';

} elseif ($vmail->isValid($email)) {

echo 'email &lt;' . $email . '&gt; valid, but not exist!';

} else {

echo 'email &lt;' . $email . '&gt; not valid and not exist!';

}

?>

</body>

</html>

class.verifyEmail.php

<?php

/**

* Class to check up e-mail

* @author liuxudong <http://www.codepearl.com>

* @copyright Copyright (c) 2010, liuxudong

*/

class verifyEmail {

/**

* User name

* @var string

*/

private $_fromName;

/**

* Domain name

* @var string

*/

private $_fromDomain;

/**

* SMTP port number

* @var int

*/

private $_port;

/**

* The connection timeout, in seconds.

* @var int

*/

private $_maxConnectionTimeout;

/**

* The timeout on socket connection

* @var int

*/

private $_maxStreamTimeout;

public function __construct() {

$this->_fromName = 'noreply';

$this->_fromDomain = 'localhost';

$this->_port = 25;

$this->_maxConnectionTimeout = 30;

$this->_maxStreamTimeout = 5;

}

/**

* Set email address for SMTP request

* @param string $email Email address

*/

public function setEmailFrom($email) {

list($this->_fromName, $this->_fromDomain) = $this->_parseEmail($email);

}

/**

* Set connection timeout, in seconds.

* @param int $seconds

*/

public function setConnectionTimeout($seconds) {

$this->_maxConnectionTimeout = $seconds;

}

/**

* Set the timeout on socket connection

* @param int $seconds

*/

public function setStreamTimeout($seconds) {

$this->_maxStreamTimeout = $seconds;

}

/**

* Validate email address.

* @param string $email

* @return boolean True if valid.

*/

public function isValid($email) {

return (false !== filter_var($email, FILTER_VALIDATE_EMAIL));

}

/*** Get array of MX records for host. Sort by weight information.

* @param string $hostname The Internet host name.

* @return array Array of the MX records found.

*/

public function getMXrecords($hostname) {

$mxhosts = array();

$mxweights = array();

if (getmxrr($

hostname, $mxhosts, $mxweights)) {

array_multisort($mxweights, $mxhosts);

}

/**

* Add A-record as last chance (e.g. if no MX record is there).

* Thanks Nicht Lieb.

*/

$mxhosts[] = $hostname;

return $mxhosts;

}

/**

* check up e-mail

* @param string $email Email address

* @return boolean True if the valid email also exist

*/

public function check($email) {

$result = false;

if ($this->isValid($email)) {

list($user, $domain) = $this->_parseEmail($email);

$mxs = $this->getMXrecords($domain);

$fp = false;

$timeout = ceil($this->_maxConnectionTimeout / count($mxs));

foreach ($mxs as $host) {

// if ($fp = @fsockopen($host, $this->_port, $errno, $errstr, $timeout)) {

if ($fp = @stream_socket_client("tcp://" . $host . ":" . $this->_port, $errno, $errstr, $timeout)) {

stream_set_timeout($fp, $this->_maxStreamTimeout);

stream_set_blocking($fp, 1);

// stream_set_blocking($fp, 0);

$code = $this->_fsockGetResponseCode($fp);

if ($code == '220') {

break;

} else {

fclose($fp);

$fp = false;

}

}

}

if ($fp) {

$this->_fsockquery($fp, "HELO " . $this->_fromDomain);

//$this->_fsockquery($fp, "VRFY " . $email);

$this->_fsockquery($fp, "MAIL FROM: <" . $this->_fromName . '@' . $this->_fromDomain . ">");

$code = $this->_fsockquery($fp, "RCPT TO: <" . $user . '@' . $domain . ">");

$this->_fsockquery($fp, "RSET");

$this->_fsockquery($fp, "QUIT");

fclose($fp);

if ($code == '250') {

/**

* http://www.ietf.org/rfc/rfc0821.txt

* 250 Requested mail action okay, completed

* email address was accepted

*/

$result = true;

} elseif ($code == '450' || $code == '451' || $code == '452') {

/**

* http://www.ietf.org/rfc/rfc0821.txt

* 450 Requested action not taken: the remote mail server

* does not want to accept mail from your server for

* some reason (IP address, blacklisting, etc..)

* Thanks Nicht Lieb.

* 451 Requested action aborted: local error in processing

* 452 Requested action not taken: insufficient system storage

* email address was greylisted (or some temporary error occured on the MTA)

* i believe that e-mail exists

*/

$result = true;

}

}

}

return $result;

}

/**

* Parses input string to array(0=>user, 1=>domain)

* @param string $email

* @return array

* @access private

*/

private function _parseEmail(&$email) {

return sscanf($email, "%[^@]@%s");

}

 

/**

* writes the contents of string to the file stream pointed to by handle $fp

* @access private

* @param resource $fp

* @param string $string The string that is to be written

* @return string Returns a string of up to length - 1 bytes read from the file pointed to by handle.

* If an error occurs, returns FALSE.

*/

private function _fsockquery(&$fp, $query) {

stream_socket_sendto($fp, $query . "/r/n");

return $this->_fsockGetResponseCode($fp);

}

/**

* Reads all the line long the answer and analyze it.

* @access private

* @param resource $fp

* @return string Response code

* If an error occurs, returns FALSE

*/

private function _fsockGetResponseCode(&$fp) {

$reply = stream_get_line($fp, 1);

$status = stream_get_meta_data($fp);

if ($status['unread_bytes']>0)

{

$reply .= stream_get_line($fp, $status['unread_bytes'],"/r/n");

}

preg_match('/^(?<code>[0-9]{3})(/s|-)(.*)$/ims', $reply, $matches);

$code = isset($matches['code']) ? $matches['code'] : false;

return $code;

}

}

?>

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲自拍偷拍色片视频| 精品亚洲一区二区三区在线观看| 国产亚洲精品美女久久久| 亚洲欧美日韩高清| 最近更新的2019中文字幕| 欧美黑人xxx| 亚洲色图50p| 亚洲精品动漫100p| 欧美一级淫片丝袜脚交| 68精品久久久久久欧美| 一区二区三区 在线观看视| 国产精品99久久99久久久二8| 青青久久av北条麻妃黑人| 亚洲欧美激情在线视频| 午夜精品视频在线| 97超级碰碰人国产在线观看| 91在线中文字幕| 日韩av网站在线| 欧美国产日本在线| 欧美乱人伦中文字幕在线| 成人黄色免费网站在线观看| 日韩av电影在线免费播放| 国内成人精品一区| 成人观看高清在线观看免费| 97视频免费在线观看| 久久国产精品久久久久久久久久| 国产精品一久久香蕉国产线看观看| 久久免费精品日本久久中文字幕| 国a精品视频大全| 懂色av中文一区二区三区天美| 欧美成人午夜剧场免费观看| 亚洲白虎美女被爆操| 欧美日韩午夜剧场| 久久久亚洲影院| 久久人91精品久久久久久不卡| 日本国产精品视频| 欧美视频国产精品| 亚洲乱码一区av黑人高潮| 精品国产乱码久久久久久天美| 国产精品a久久久久久| 精品偷拍各种wc美女嘘嘘| 国产精品av免费在线观看| 中文精品99久久国产香蕉| 国产精品a久久久久久| 黑人欧美xxxx| 欧美性受xxxx白人性爽| 久久天天躁狠狠躁老女人| 欧美精品国产精品日韩精品| 国产在线98福利播放视频| 欧美激情性做爰免费视频| 性夜试看影院91社区| 久久久精品2019中文字幕神马| 国内精品久久久| 成人免费看吃奶视频网站| 久久久精品免费| 日韩欧美在线中文字幕| 国产日韩欧美日韩大片| 宅男66日本亚洲欧美视频| 欧美日韩国产综合视频在线观看中文| 国产中文日韩欧美| 色偷偷av一区二区三区乱| 在线日韩精品视频| 中文字幕在线看视频国产欧美| 国产精品揄拍一区二区| 91成人性视频| 不卡中文字幕av| 国产在线高清精品| 韩国欧美亚洲国产| 国产精品成人一区| 国产亚洲精品久久久久久| 欧美精品国产精品日韩精品| 亚洲成人激情在线观看| 正在播放欧美一区| 亚洲激情免费观看| 国产欧美日韩中文字幕在线| 91高清视频在线免费观看| 精品日韩美女的视频高清| 亚洲一区二区中文| 日韩欧亚中文在线| 日韩一中文字幕| 精品伊人久久97| 88国产精品欧美一区二区三区| 北条麻妃一区二区三区中文字幕| 欧美国产日韩二区| 亚洲欧美成人精品| 日韩av影片在线观看| 亚洲美腿欧美激情另类| 午夜精品一区二区三区av| 影音先锋日韩有码| 国产一区二区激情| 欧美乱妇高清无乱码| 亚洲欧美精品伊人久久| 在线亚洲欧美视频| 精品调教chinesegay| 亚洲片在线资源| 一区二区在线视频播放| 在线看福利67194| 精品久久久久久久久久久久久久| 91av在线视频观看| 亚洲国产又黄又爽女人高潮的| 亚洲欧美综合v| 91成品人片a无限观看| 欧美丰满老妇厨房牲生活| 一道本无吗dⅴd在线播放一区| 97超级碰碰人国产在线观看| 久久精品国产视频| 国外成人性视频| 夜夜躁日日躁狠狠久久88av| 成人性生交大片免费看小说| 自拍视频国产精品| 91免费福利视频| 亚洲社区在线观看| 亚洲视频视频在线| 久久人91精品久久久久久不卡| 欧日韩不卡在线视频| 97成人精品区在线播放| 91久久精品国产91久久| 欧美华人在线视频| 国产精品视频网站| 国产精品欧美亚洲777777| 久久亚洲国产精品成人av秋霞| 久久精品2019中文字幕| 国产精品视频yy9099| 国产精品久久久久久久久久久新郎| 国产在线观看精品一区二区三区| 日韩精品中文字幕在线播放| 在线视频欧美日韩精品| 日韩在线观看视频免费| 国产精品香蕉av| 久久久视频免费观看| 青青久久aⅴ北条麻妃| 97免费中文视频在线观看| 欧美午夜美女看片| 亚洲精品久久久久久久久久久久久| 成人网在线视频| 亚洲人成电影网站色xx| 久久精品欧美视频| 精品激情国产视频| 日韩欧美在线免费观看| 亚洲激情国产精品| 国产97人人超碰caoprom| 国产99久久精品一区二区 夜夜躁日日躁| 97成人超碰免| 亚洲精品欧美日韩| 亚洲欧美日本伦理| 亚洲男人天堂久| 国产成人欧美在线观看| 亚洲精品国产精品国自产在线| 国产成人精品久久久| 亚洲人午夜精品免费| 亚洲欧美制服第一页| 欧洲精品毛片网站| 精品电影在线观看| 亚洲色图偷窥自拍| 亚洲精选在线观看| 国产成人精品优优av| 深夜福利亚洲导航| 2019最新中文字幕| 日韩欧美成人网| 日韩欧美一区二区在线| 性欧美视频videos6一9| 韩曰欧美视频免费观看| 欧美极度另类性三渗透| 欧美另类在线播放|