Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Sprawdzenie adresu e-mail
sytluk
post 8.11.2011, 09:40:54
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 3
Dołączył: 1.08.2006

Ostrzeżenie: (0%)
-----


Witam,

tworzę skrypt wysyłający wiadomości e-mail, niestety nie wiem jak mógłbym sprawdzić istnienie adresów e-mail w bazie danych. Nie chodzi o sprawdzenie czy adres e-mail został poprawnie wpisany ani aktywację adresu, tylko sprawdzenie czy jeszcze taki adres istnieje. Czy jest w ogóle taka możliwość?

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
abort
post 10.11.2011, 22:35:59
Post #2





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


Tak bezpośrednio, to niespecjalnie. Możesz conajwyżej dorobić warunek na istnienie domeny danego maila. Jeśli jesteś w stanie w kodzie dorobić sprawdzenie, czy istnieje w DNS rekord MX dla tej domeny, to jesteś niewielki kroczek bliżej:

Kod
host -t MX gmail.com
gmail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 5 gmail-smtp-in.l.google.com.
gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com.

hostem przyjmującym maile dla danej domeny jest gmail-smtp-in.l.google.com - i tyle jesteśmy na 100% w stanie ustalić

I właściwie na tym się kończy. Ludzie blokują komendę VRFY protokołu (E)SMTP, przykład:

Kod
telnet gmail-smtp-in.l.google.com. 25
Trying 74.125.39.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP a16si4280408fak.96
vrfy dowolnyuser@gmail.com
252 2.1.5 Send some mail, I'll try my best a16si4280408fak.96
quit
221 2.0.0 closing connection a16si4280408fak.96
Connection closed by foreign host.


Jak sam widzisz, serwer mówi (w przetłumaczeniu na polski) "ślij maila, zobaczmy, co da się zrobić".
Więc jak wyślesz maila, to masz kilka możliwości:
1. mail istniejeje i zostanie dostarczony - co jest dobrym znakiem, ale nie zostaniesz o tym poinformowany (o ile nie użyjesz DSN - Delivery Status Notification, choć nie wszystkie serwery muszą to honorować)
2. mail istnieje, ale... w danej chwili nie da się dostarczyć maila do usera - możesz dostać informację, że na zapasowych serwerach mailowych Twój mail stoi gdzieś w kolejce, i owe serwery będą próbować przez ileś czasu dostarczać
3. Mail istnieje, ale... user ma pełną skrzynkę - dostaniesz zwrotkę z informacją w stylu "mailbox full".
4. Mail nie istnieje - więc nie zostanie dostarczony - dostaniesz zwrotkę "no user".

Generalnie, musiałbyś każdą informację zwrotną obrabiać na serwerze (jeśli to unix/linux, to polecam robić to za pomocą procmaila - żeby nie przetwarzać każdego maila przychodzącego do postmastera). Przy czym nie każda informacja o problemach z dostarczeniem maila na daną skrzynkę równa się informacji o braku skrzynki. Więc procmail musiałby uruchamiać jakiś skrypt (może nawet wywołać skrypt w php, bo da się to zrobić z linii poleceń), który daną zwrotkę przeszuka na okoliczność najczęstszych komunikatów (lub jeszcze lepiej - ich statusów) i w razie informacji o braku usera (zwrotka z przyczyn, że "user nie istnieje"), połączy się z bazą i sam uaktualni pole w bazie na "" (pole z emailem, oczywiście). Może też zrobić dosłownie cokolwiek z kontem - np. je zawiesić, skasować... full serwis smile.gif

Jak widać, da się jednak to zrobić, ale wymaga to niezłego nakładu pracy. Niemniej, niewykonalne nie jest.

Ten post edytował abort 10.11.2011, 22:37:06
Go to the top of the page
+Quote Post

Posty w temacie
- sytluk   [PHP] Sprawdzenie adresu e-mail   8.11.2011, 09:40:54
- - Ges   Poza oczywistym sprawdzeniem poprawności formatu e...   8.11.2011, 12:00:16
- - kokers   zanim wyślesz wiadomość sprawdź w bazie czy adres ...   8.11.2011, 12:00:25
- - wNogachSpisz   Cytat(sytluk @ 8.11.2011, 09:40:54 ) ...   8.11.2011, 12:22:16
- - sytluk   Źle się wyrazilem, chodziło mi o to, jak sprawdzić...   10.11.2011, 16:42:59
- - abort   Tak bezpośrednio, to niespecjalnie. Możesz conajwy...   10.11.2011, 22:35:59
- - fernet   Po prostu ślij spam i nie zastanawiaj się czy doch...   11.11.2011, 01:32:59
- - celbarowicz   Użytkownik ma zapewne nr id, w tej samej lub inn...   11.11.2011, 20:18:02
- - abort   @celbarowicz - to już było wałkowane, nie czytałeś...   11.11.2011, 20:56:46
- - fernet   A tak powaznie abort wspomnial o dyskusji z serwer...   11.11.2011, 21:28:21
|- - abort   Cytat(fernet @ 11.11.2011, 21:28:21 )...   11.11.2011, 22:11:30
- - fernet   Gadanie z serwerem do niczego Cie nie doprodzi tak...   12.11.2011, 19:48:14
- - abort   Mała prośba: pisz krótszymi zdaniami, żeby dało si...   12.11.2011, 23:15:08
- - fernet   Skoro mozesz dowiedziec sie czy jeden mail w obreb...   12.11.2011, 23:57:10
- - abort   Owszem, załóżmy, że mógłbym wysłać nawet te kilkad...   13.11.2011, 00:08:15
- - fernet   Napisz wyraznie po jakim czasie przychodzi ci fals...   13.11.2011, 00:29:50
- - abort   Nie napisałem wyrażenia "niepoprawnego maila...   13.11.2011, 00:39:56
- - fernet   Nieistniejąca skrzynka, niepoprawny mail dla mnie ...   13.11.2011, 00:59:10
- - abort   Cytat(fernet @ 13.11.2011, 00:59:10 )...   14.11.2011, 23:44:49


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 02:30