![]() |
![]() |
![]() ![]()
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. |
|
|
![]() |
![]()
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 ![]() 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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 02:30 |