Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > E-posta kontrolü
Yazar
omergok


avatar
kenderuntanbul
Kayıt: 21.02.2007
03.06.2008-07:31 #45391
Kimden duyduğumu hatırlamıyorum ama geçen gün birisinden e-posta adresinin gerçekte var olup olmadığını kontrol edebilecek bir method yazılabildiğini duymuştum. Klasik @ işareti kontrolü, domain kontrolü haricinde direkt olarak o e-posta'nın sunucusuna bir kontrol paketi gönderilip true/false şeklinde cevap alındığı söylenmişti. True gelirse cevap öyle bir e-posta'nın mevcut olduğu, false gelirse de mevcut olmadığı sonucuna ulaşılıyormuş. Acaba bunu nasıl yapabilirim?

Not: Biraz araştırdım şöyle de bir örnek buldum. e-posta adresini yazıyorsunuz size doğruluğu olup olmadığını söylüyor, daha doğrusu bir wsdl sayfası dönüyor.

http://ws.cdyne.com/emailverify/emailvernotestemail.asmx?op=VerifyEmail







Yazar
antirunje


avatar

Kayıt: 16.11.2006
03.06.2008-13:41 #45404
Nette bunlar yazıyor belki işine yarar:
A valid main address has a string before an @, at least two (?) letters behind that, then a '.' and one of the official TLDs (there's probably a list somewhere). Certain characters aren't allowed, too.

Look at string.subString() and String.indexOf.
index of @ must be > 0
index of . must be > index of @ + 2 and < length -1
String endsWith any of the offical TLDs

--------------------------
javascript hali, bunu da incele işte. :)

<!--This function validates email address -->
function emailCheck (emailStr) {
 
/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/ 
 
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; :  " . [ ]    */
var specialChars="\(\)<>@,;:\\\"\.\[\]"
 
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="[^\s" + specialChars + "]"
 
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="("[^"]*")"
 
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^[(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})]$/ 
 
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+'
 
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
 
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\." + word + ")*$")
 
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\." + atom +")*$")
 
 
/* Finally, let's start trying to figure out if the supplied address is
   valid. */
 
/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	alert("Email address seems incorrect (check @ and .'s)")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]
 
// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    alert("The username doesn't seem to be valid.")
    return false
}
 
/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Destination IP address is invalid!")
		return false
	    }
    }
    return false
}
 
// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("The domain name doesn't seem to be valid.")
    return false
}
 
/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */
 
/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   // the address must end in a two letter or three letter word.
   alert("The address must end in a three-letter domain, or two letter country.")
   return false
}
 
// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="This address is missing a hostname!"
   alert(errStr)
   return false
}
 
// If we've gotten this far, everything's valid!
return true
}


------------------------------------------
http://s3.dosya.cc/denemeKodlar.rar.html

Umarım bir şeyler fikir verir, bir ara C# 'ta deneyip yollarım. :P :)





Eger ac ve kimsesiz bir kopegi alip bakar ve rahata kavusturursaniz sizi isirmaz. Insan ve kopek arasindaki temel fark budur.






Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
03.06.2008-15:01 #45409
verilen e-postanın MX kayıtlarını sorgulayabilirsin. eğer MX kaydı yoksa e-posta doğru değildir.
bu çok yavaş bir yontem tabi.





N/A
Yazar
omergok


avatar
kenderuntanbul
Kayıt: 21.02.2007
03.06.2008-15:21 #45410
antirunje ben onu kastetmiyorum. senin verdiğin kontrole wdfgghj@hebelehubele.com yazsam doğru sayar. ben böyle bir mailin de var olmadığını öğrenmek istiyorum.

Orhan abi o verdiğim linkteki örneğe baktın mı?







Yazar
aliprinter


avatar
İstanbul
Kayıt: 12.02.2006
03.06.2008-16:10 #45414
Doğru çalışan bir e-mail validation örneği ile karşılaşmadım daha. http://hexillion.com/email_validation/ adresindekinde de olduğu gibi domain geçerliliğine, mx kayıtlarına, smtp oturumundan dönen değerlere bakılıyor ancak buradan sadece domainin geçerliliği düzgün doğrulanabiliyor. Fakat çoğunlukla e-mail hesabının doğruluğu tam olmayabiliyor. Öyle bir hesap olmasa bile smtp sessionından ok yanıtı dönebiliyor.
Eğer bu manada düzgün çalışan bir örnek ya da uygulama varsa benim için de iyi olur.





Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
03.06.2008-16:17 #45415
bu webserviste mx kayıtlarını sorguluyor bunu da kullanabilirsin.





N/A
Yazar
aliprinter


avatar
İstanbul
Kayıt: 12.02.2006
03.06.2008-16:34 #45416
Yahoo dışındakiler için sorunsuz görünüyor.





Yazar
halit


avatar

Kayıt: 26.02.2006
03.06.2008-18:29 #45419
bildiğim kadayıla mx ler o domain isminin mail servisi sunup sunmadığını gösterir. ama bir domaine ait verilen bir hesabın geçerliliğini doğrulayamaz.

çünkü mail serverların genellikle bir default hesabı olur ve o servera gelen mailler; eğer yanlış hesaba gelmişse, hesap dondurulmuşsa veya kotası doluysa bu tür mailler default adrese gider. ve eğer default hesap için bir auto responder ayarlı değilse; o hesabın hatalı veya sorunlu olduğunu asla öğrenemezsiniz.

örnekle anlatayım:
domain hesabı abcdef.com olsun ve deafult mail hesabı da xyz@abcdef.com olsun.
siz klm@abcdef.com adresine mail attınız diyelim. bu hesap varsa ne ala. mail hesaba gider. yok eğer o hesap yoksa; hatalıysa, dondurulmuşsa veya kotası dolmuşsa mail direkt xyv@abcdef.com'a gider. bu aşamada da xyz@abcdef.com için auto responder (otomatik cevaplayıcı) varsa size mail adresinin doğru ulaşmadığını ve varsa ayrıntıları döner. yok eğer auto responder da ayarlı değilse; siz mailin gittiğini sanırsınız da mail istenen kişiye ulaşamamıştır. dfault hesabın yöneticisi de sizin mailinizi ne kadar önemser bilinmez; o da mail hesaplarının ve gelen mail sayılarının çokluğuna bağlı...


özetle; bir domaine ait belirli bir mail hesabının geçerli olup olmadığını bilemeyiz.


ben böyle biliyorum. yanlış biliyorsam daha doğrusunu bilen biri bildiklerini bizimle paylaşırsa biz de doğrusunu öğrenmiş oluruz.





Yazar
omergok


avatar
kenderuntanbul
Kayıt: 21.02.2007
03.06.2008-18:46 #45420
halit yazdi
 
bildiğim kadayıla mx ler o domain isminin mail servisi sunup sunmadığını gösterir. ama bir domaine ait verilen bir hesabın geçerliliğini doğrulayamaz.

çünkü mail serverların genellikle bir default hesabı olur ve o servera gelen mailler; eğer yanlış hesaba gelmişse, hesap dondurulmuşsa veya kotası doluysa bu tür mailler default adrese gider. ve eğer default hesap için bir auto responder ayarlı değilse; o hesabın hatalı veya sorunlu olduğunu asla öğrenemezsiniz.

örnekle anlatayım:
domain hesabı abcdef.com olsun ve deafult mail hesabı da xyz@abcdef.com olsun.
siz klm@abcdef.com adresine mail attınız diyelim. bu hesap varsa ne ala. mail hesaba gider. yok eğer o hesap yoksa; hatalıysa, dondurulmuşsa veya kotası dolmuşsa mail direkt xyv@abcdef.com'a gider. bu aşamada da xyz@abcdef.com için auto responder (otomatik cevaplayıcı) varsa size mail adresinin doğru ulaşmadığını ve varsa ayrıntıları döner. yok eğer auto responder da ayarlı değilse; siz mailin gittiğini sanırsınız da mail istenen kişiye ulaşamamıştır. dfault hesabın yöneticisi de sizin mailinizi ne kadar önemser bilinmez; o da mail hesaplarının ve gelen mail sayılarının çokluğuna bağlı...


özetle; bir domaine ait belirli bir mail hesabının geçerli olup olmadığını bilemeyiz.


ben böyle biliyorum. yanlış biliyorsam daha doğrusunu bilen biri bildiklerini bizimle paylaşırsa biz de doğrusunu öğrenmiş oluruz.


verdiğim adreste birkaç hesap (ghjkljjk@hotmail.com şeklinde) denerseniz görebilirsiniz kullanıcının varolup olmadığını. ali'nin söylediği gibi yahoo hesaplarında sistem patlıyor. ama diğer hesaplar için denediğimde gayet başarılı sonuçlar aldım. bahsettiğiniz default hesap bildiğim kadarıyla siz ayarlamadan oluşturulmuyor yani default olarak gelmiyor o hesap. benim istediğim bu sistemi oluşturmanın kodu ve bahsi geçen default hesapları da aşıp o hesapların varolup olmadığını öğrenebilme.







Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb