Konular
Link Değişimi
Php
Mysql
Html
Javascript
Windows Vista
Program Anlatımı
Internet
Arama Motorları
Windows 2003 Server
Komikler
Windows Xp
Isa Server
Network
Ofis Programları
Css
Photoshop
Donanım
Joomla
Hava Trafik
Youtube Video
Diğer Konular
Ajax - Jquery örnekler

Linklerimiz
Ucuz 5 yıldız Antalya Otel
Meerschaum Smoking Pipes
Hire A Gulet Turkey
Marmaris Otelleri Tavsiye Şikayet
Link Değişimi
Reciprocal Link Exchange
Otel Fiyat
Mavi Yolculuk Göcek
Catamaran Rental Turkey
Adana Demirspor Dizini
Rhodes Fethiye Ferryboat
Bodrum Otelleri Dizini

 
PHP Smtp ile email adresinin doğruluğunu kontrol etmek
<?php


class SMTP_validateEmail {

/**
* PHP Socket resource to remote MTA
* @var resource $sock
*/
var $sock;

/**
* Current User being validated
*/
var $user;
/**
* Current domain where user is being validated
*/
var $domain;
/**
* List of domains to validate users on
*/
var $domains;
/**
* SMTP Port
*/
var $port = 25;
/**
* Maximum Connection Time to wait for connection establishment per MTA
*/
var $max_conn_time = 30;
/**
* Maximum time to read from socket before giving up
*/
var $max_read_time = 5;

/**
* username of sender
*/
var $from_user = 'user';
/**
* Host Name of sender
*/
var $from_domain = 'localhost';

/**
* Nameservers to use when make DNS query for MX entries
* @var Array $nameservers
*/
var $nameservers = array(
'192.168.0.1'
);

var $debug = false;

/**
* Initializes the Class
* @return SMTP_validateEmail Instance
* @param $email Array[optional] List of Emails to Validate
* @param $sender String[optional] Email of validator
*/
function SMTP_validateEmail($emails = false, $sender = false) {
if ($emails) {
$this->setEmails($emails);
}
if ($sender) {
$this->setSenderEmail($sender);
}
}

function _parseEmail($email) {
$parts = explode('@', $email);
$domain = array_pop($parts);
$user= implode('@', $parts);
return array($user, $domain);
}

/**
* Set the Emails to validate
* @param $emails Array List of Emails
*/
function setEmails($emails) {
foreach($emails as $email) {
list($user, $domain) = $this->_parseEmail($email);
if (!isset($this->domains[$domain])) {
$this->domains[$domain] = array();
}
$this->domains[$domain][] = $user;
}
}

/**
* Set the Email of the sender/validator
* @param $email String
*/
function setSenderEmail($email) {
$parts = $this->_parseEmail($email);
$this->from_user = $parts[0];
$this->from_domain = $parts[1];
}

/**
* Validate Email Addresses
* @param String $emails Emails to validate (recipient emails)
* @param String $sender Sender's Email
* @return Array Associative List of Emails and their validation results
*/
function validate($emails = false, $sender = false) {

$results = array();

if ($emails) {
$this->setEmails($emails);
}
if ($sender) {
$this->setSenderEmail($sender);
}

// query the MTAs on each Domain
foreach($this->domains as $domain=>$users) {

$mxs = array();

// current domain being queried
$this->domain = $domain;

// retrieve SMTP Server via MX query on domain
list($hosts, $mxweights) = $this->queryMX($domain);

// retrieve MX priorities
for($n=0; $n < count($hosts); $n++){
$mxs[$hosts[$n]] = $mxweights[$n];
}
asort($mxs);

// last fallback is the original domain
$mxs[$this->domain] = 0;

$this->debug(print_r($mxs, 1));

$timeout = $this->max_conn_time;

// try each host
while(list($host) = each($mxs)) {
// connect to SMTP server
$this->debug("try $host:$this->port\n");
if ($this->sock = fsockopen($host, $this->port, $errno, $errstr, (float) $timeout)) {
stream_set_timeout($this->sock, $this->max_read_time);
break;
}
}

// did we get a TCP socket
if ($this->sock) {
$reply = fread($this->sock, 2082);
$this->debug("<<<\n$reply");

preg_match('/^([0-9]{3}) /ims', $reply, $matches);
$code = isset($matches[1]) ? $matches[1] : '';

if($code != '220') {
// MTA gave an error...
foreach($users as $user) {
$results[$user.'@'.$domain] = false;
}
continue;
}

// say helo
$this->send("HELO ".$this->from_domain);
// tell of sender
$this->send("MAIL FROM: <".$this->from_user.'@'.$this->from_domain.">");

// ask for each recepient on this domain
foreach($users as $user) {

// ask of recepient
$reply = $this->send("RCPT TO: <".$user.'@'.$domain.">");

// get code and msg from response
preg_match('/^([0-9]{3}) /ims', $reply, $matches);
$code = isset($matches[1]) ? $matches[1] : '';

if ($code == '250') {
// you received 250 so the email address was accepted
$results[$user.'@'.$domain] = true;
} elseif ($code == '451' || $code == '452') {
// you received 451 so the email address was greylisted (or some temporary error occured on the MTA) - so assume is ok
$results[$user.'@'.$domain] = true;
} else {
$results[$user.'@'.$domain] = false;
}

}

// reset before quit
$this->send("RSET");

// quit
$this->send("quit");
// close socket
fclose($this->sock);

}
}
return $results;
}



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;
}

/**
* Query DNS server for MX entries
* @return
*/
function queryMX($domain) {
$hosts = array();
$mxweights = array();
if (function_exists('getmxrr')) {
getmxrr($domain, $hosts, $mxweights);
} else {
// windows, we need Net_DNS
require_once 'Net/DNS.php';

$resolver = new Net_DNS_Resolver();
$resolver->debug = $this->debug;
// nameservers to query
$resolver->nameservers = $this->nameservers;
$resp = $resolver->query($domain, 'MX');
if ($resp) {
foreach($resp->answer as $answer) {
$hosts[] = $answer->exchange;
$mxweights[] = $answer->preference;
}
}

}
return array($hosts, $mxweights);
}

/**
* Simple function to replicate PHP 5 behaviour. http://php.net/microtime
*/
function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}

function debug($str) {
if ($this->debug) {
echo '<pre>'.htmlentities($str).'</pre>';
}
}

}


?>
Böyyük Patron Tarafından 20-03-2009 Tarihinde Gönderilmiştir.   Bu Konuyu Yazdır
Kaynak : 

 

En Son Eklenenler
PHP
mail ile ekli dosya göndermek
PHP
web sayfalarından meta tagları favicon resimleri almak
PHP
web sayfasını curl ile text olarak almak
PHP
curl ile facebook a login olmak
PHP
array_map fonksiyonu ile büyük kolaylıklar
PHP
php ile cache sistemi
PHP
google sitemap pinglemek
MYSQL
Default Değer
MYSQL
Bit Veri Tipi:
MYSQL
Primary Key ile Unique Key Arasındaki Fark
ajax - jquery örnekler
Bazı jQuery Fonksiyonlarınızı $(window).load Olayı İçerisine Yazın
Javascript
javascript kodlarını sıkıştırma veya şifreleme
ajax - jquery örnekler
jquery siblings
MYSQL
SQL Saldırıları ve Önlemler
MYSQL
MySQL ile Trigger Oluşturma
Arama motorları
google incelikleri
Arama motorları
Google Sizi Sevsin
PHP
PHP ile aranan kelimeyi renklendirme
PHP
PHP 5.3.0 da dikkat etmeniz gerekenler
MYSQL
MySQL Root Şifresini Sıfırlama
MYSQL
MySQL Root Şifresini Sıfırlama
PHP
php ile resimlere watermark yapmak
Arama motorları
Ref Saldırıları ve çözümleri
MYSQL
Tablodaki aynı kayıtları silmek
MYSQL
Regular Expression kullanımı
MYSQL
Regular Expression kullanımı
MYSQL
Regular Expression kullanımı
PHP
Dosya izinlerini kontrol etme
ajax - jquery örnekler
jquery bir elementin altındakilere bir class atamak
ajax - jquery örnekler
jquery bir elementin class (style) özelliklerini değitirmek
PHP
GDI ile progress bar yapmak
PHP
.htaccess ile sayfaları klasör olarak göstermek
ajax - jquery örnekler
jquery seçilen radio butonu bulmak
ajax - jquery örnekler
jquery 18 yaş kontrolü
Javascript
jquery browser öğrenmek
ajax - jquery örnekler
jquery mouse x y pozisyonunu bulmak
ajax - jquery örnekler
jquery mouse sağ tuşu kitlemek disabled
ajax - jquery örnekler
jquery jquery.js yüklenmişmi
ajax - jquery örnekler
jquery elementin disabled özelliğini aktif veya pasif yapmak
ajax - jquery örnekler
jquery checkbox kutusu kontrolü checked
İletişim : bpatron@codekodu.com
429049Kişi Tarafından Sitemiz Ziyaret Edilmiştir. 13 Kişi Online
Bugün 11 Saat 04 Dakikada Sitemizi Tekil 124 Kişi Ziyaret Etmiştir.
Dün Sitemizi Tekil 307 Kişi Ziyaret Etmiştir.
Sitemizi En Çok Tekil 10-03-2010 Tarihinde 402 Kişi Ziyaret Etmiştir.
Sitemizdeki bilgilerin büyük çoğunluğu alıntıdır.İlgili yazının yazarının veya kaynak sahibinin istemesi halinde ilgili yazı sitemizden kaldırılacaktır.
Sitemizin İmalatı Böyyükpatron Tarafından Yapılmıştır.