Check email met DNS

Door Hipska BE, 13 jaar geleden, 4.015x bekeken

Met deze functie is het mogelijk om van een email te controlleren als de host werkelijk een mailserver heeft.

1. De functie haalt de hostname op uit het opgegeven emailadres
2. Haalt via DNS-lookup de mx (mail-exchange) records op.
3. Kijkt of er minstens 1 mx host is met een A of AAAA record.

Indien alles doorlopen kan worden betekent dit dat de hostname mogelijks emails kan ontvangen.
Deze controle betekent nog niet dat het email werkelijk bestaat bij deze host.

Gesponsorde koppelingen

PHP script bestanden

  1. check-email-met-dns

 

Er zijn 7 reacties op 'Check email met dns'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Lode
Lode
13 jaar geleden
 
0 +1 -0 -1
Dit is niet echt een toevoeging denk ik...
Staan genoeg van dit soort snippets op php.net ook

$mxhosts moeten we zeker gokken wat daar inzit ?

preg_match() > 0, is ook niet helemaal logisch imo. Want hij geeft alleen maar 0 of 1

dus dan lijkt me == '1' genoeg, kan natuurlijk op tig manieren... maar > lijkt me de meest onlogische operator persoonlijk...
Hipska BE
Hipska BE
13 jaar geleden
 
0 +1 -0 -1
@Lode: Als je ergens wil op reageren, weet dan eerst waar het over gaat..

Dit script is geplaatst naar aanleiding van dit topic.

Dit script is zeker een toevoeging voor DEZE site. En op php.net heb ik ook nog geen script gezien die er rekening mee houdt dat de mx records een IPv6 adres hebben. (toekomstgericht)

Als je de functie getmxrr even had onderzocht, had je gezien dat het 2de argument een pointer naar een array is, en dat dus ook al het antwoord is op de vraag waar $mxhosts vandaan komt.

Als de functie toch enkel maar 1 of 0 retourneert, dan is > 0 toch helemaal niet slecht? Beter nog, uw voorstel om == '1' te gebruiken slaat kant nog wal, want hierin wil jij dus zeggen dat die 1 een string zou zijn?
Mar cel
Mar cel
13 jaar geleden
 
0 +1 -0 -1
Bedankt, handig.
Raymond ---
Raymond ---
13 jaar geleden
 
0 +1 -0 -1
Zo iets had ik ook ooit gemaakt, ik gebruikte het vaak, totdat ik er achter kwam dat, om de 1 of andere vage reden checkdnsrr en getmxrr niet altijd werken (waarom ben ik nog steeds niet achter, als iemand me het kan vertellen, graag).

Ik heb toen een kleine functie geschreven die gebruik maakt van exec() en nslookup (voorwaarde is dus wel dat exec() is toegestaan). Het eheft tot nu toe altijd gewerkt bij mij:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function customCheckDnsrr($host, $type='MX')
{

  if(!empty($host)) // Geen host = gelijk stoppen
  {
 
    exec('nslookup -type='.$type.' '.$host,$output); // nslookup commando uitvoeren
 
    foreach($output as $line)
    {

      if(preg_match('/^'.$host.'/', $line)) // Kijken of er results zijn
      {
        return true; // Zo ja, true retourneren
      }
    }

    return false; // Anders false
  }
return false;
}

?>

PS. werkt alleen op linux machine's voor windows moet je het exec regeltje aan passen in die voor windows.
Afra ca
Afra ca
13 jaar geleden
 
0 +1 -0 -1
Heb zelf ook heel wat email-check-functies voorbij zien komen, sommigen die slechts structuur checken, anderen met dnsrr, maar bij die laatste werd er wel op gewezen dat hij niet werkt onder windows. Geldt dat ook voor dit script?
Hipska BE
Hipska BE
13 jaar geleden
 
0 +1 -0 -1
@Afra: Dit kun je zelf opzoeken op de php.net site.

5.3.0 This function is now available on Windows platforms.

Even upgraden naar php 5.3.0 dus en hij werkt op windows ook.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Afra ca
Afra ca
13 jaar geleden
 
0 +1 -0 -1
@Hipska.

De RC (5.3.0 in beta) heb je het dan over. Zal ik zo even downloaden en testen.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. check-email-met-dns

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.