Php - prawdziwość maila


(Infokurs) #1

Jak sprawdzić czy adres jest prawdziwy?

Nie pytam o składnie tylko o to czy faktycznie istnieje.

Jest na to jakiś skrypt?


(si@tk@rz) #2

wg mnie najlepiej sprawdzić go na podstawie wyrażeń regularnych

poniżej funkcja w php, która sprawdza poprawność wpisanego adresu email

function poprawny_email( $email ) {

  if ( !eregi( '^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-\.]+\.[a-zA-Z0-9\-]+$', $email ) ) {

    return false ;

  } 

  return true ;

}

(Infokurs) #3

Przecież napisałem że nie chodzi o składnie a o to czy on istnieje!

składnie to ja potrafie sprawdzić, tylko to informuje o tym czy adres wygląda na poprawny a nie o tym czy jest prawdziwy.

jak dam wrednymail@gmail.com to on przejdziedzie taki test, choć faktycznie taki adres nie istnieje.

więc jest jakiś sposób na sprawdzenie istnienia adresu?


(si@tk@rz) #4

http://articles.sitepoint.com/article/u ... ddress-php

http://php.net/manual/en/function.checkdnsrr.php

może coś pomoże


(Infokurs) #5

Może nie. Tę metode sprawdziłem jeszcze zanim zadałem tutaj pytanie.

checkdnsrr można chyba tylko sprawdzić domenę, a ja dalej nie wiem czy adres istnieje bo to co przed @ może być zmyślone


(motorhead) #6

Musisz z php połączyć sie z SMTP i zapytać, coś ala:

$smtp_server = fsockopen("mail.serwer.pl", 25, $errno, $errstr, 30);fwrite($smtp_server, "HELO hi\r\n");fwrite($smtp_server, "MAIL FROM: \r\n");fwrite($smtp_server, "RCPT TO: \r\n"); [/code]



Jak po rcpt jest ok - istnieje, a jeśli nie to zwraca błąd, doczytasz sobie...



Niektóre serwery odpowiadają na:


[code=php]"VRFY user" 



ale to zależy od konfiguracji.



Tak więc 100% pewności nie masz - zależy od konfiguracji serwera

Szczegóły: 

http://tools.ietf.org/html/rfc2821



I jeszcze ustaw mail po "FROM: " na prawidłowy dla (bo sprawdza IP) domeny z której się łączysz bo SPF Ci nie pozwoli dalej działać.

(Infokurs) #7

dziękuje, o to mi chodziło.