Validatie email adres

Status
Niet open voor verdere reacties.

cptnalgren

Gebruiker
Lid geworden
20 dec 2007
Berichten
49
Je kan een email adres controleren via onderstaande code :

Code:
  Function EmailCheck(ByVal emailAddress As String) As Boolean
 
        'Specify the regex
        Dim pattern As String = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
        Dim emailAddressMatch As Match = Regex.Match(emailAddress, pattern)
 
        'Show result
        If emailAddressMatch.Success Then
            MessageBox.Show(emailAddress & " = Valid email", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Else
            MessageBox.Show(emailAddress & " = Invalid email", MessageBoxButtons.OK, MessageBoxIcon.Stop)
        End If
 
    End Function
maar is er een mogelijkheid om na te gaan of het email adres echt bestaat?
 
Dat kan alleen als je een mailtest-sessie opzet met de mailserver waar je het e-mail adres van checken wilt. Daarvoor moet je een SMTP-sessie kunnen opzetten met de verantwoordelijke mailserver op poort 25 TCP waarbij positief wordt gereageerd op het RCPT TO:<e-mailadres> gedeelte.
NB: Verbinden met poort 25 op externe mailserver is bij thuisabonnementen doorgaans niet toegestaan. [Doorgaans is alleen verbinding met de mailserver van de provider op poort 25 toegestaan voor thuisabonnees.]

Voorbeeld (even nagespeeld zónder programma): Stel ik wil een mail sturen naar janpiet_vandendommen@gmail.com:
In CMD-venster:
nslookup -type=mx gmail.com
Ik krijg (o.a.) terug, waarmee aangetoond is dat gmail.com als Internet-domein bestaat én dat er (in principe) mail naar te versturen is:
Non-authoritative answer:
gmail.com MX preference = 20, mail exchanger = alt2.gmail-smtp-in.l.google.com
gmail.com MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com
gmail.com MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com
gmail.com MX preference = 30, mail exchanger = alt3.gmail-smtp-in.l.google.com
gmail.com MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com

Ik begin met een mail-sessie met de MX-server met het laagste preference-cijfer (=hoogste gewenst):
telnet gmail-smtp-in.l.google.com 25
220 mx.google.com ESMTP p9si1355454eef.36
helo iets.nl
250 mx.google.com at your service
mail from:<xxx.xxxxxx@xxxxxxxx.xx>
250 2.1.0 OK p9si1355454eef.36
rcpt to:<janpiet_vandendommen@gmail.com>
550-5.1.1 The email account that you tried to reach does not exist. Please try
550-5.1.1 double-checking the recipient's email address for typos or
550-5.1.1 unnecessary spaces. Learn more at
550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596 p9si1355454ee
f.36
quit

Zoals je ziet wordt janpiet_vandendommen@gmail.com niet geaccepteerd als een mail-ontvanger, dus zo heb ik uitgezocht dat het geen geldig e-mail adres is.

Natuurlijk zul je ook nog rekening moeten houden met expres ingebouwde vertragingen in de ontvangende mailserver (bijv. d.m.v. greylisting), dat wellicht de hoogst gewenste mailserver niet bereikbaar is en je dus moet uitwijken naar een mail-server die iets minder gewenst is (in het voorbeeld dus door te gaan met alt1.gmail-smtp-in.l.google.com) etc.

Wellicht is er een method en/of API die dit werk allemaal uit handen kan nemen voor je, maar dat weet ik niet.

Succes,

Tijs.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan