Co sprawdza ten walidator
Adresy sprawdzamy według składni Mailbox z RFC 5321 (reguł stosowanych przez serwery SMTP), w tym części lokalnych w cudzysłowie, literałów adresowych takich jak [192.0.2.1] oraz limitów długości: 64 znaki dla części lokalnej i 254 dla całego adresu.
Obsługujemy adresy międzynarodowe: części lokalne ze znakami spoza ASCII (RFC 6531, SMTPUTF8) oznaczamy, bo nie każdy system je akceptuje, a domeny Unicode zamieniamy na postać ASCII (Punycode). Podpowiadamy też poprawki typowych literówek w popularnych domenach pocztowych.
Opcjonalnie możesz sprawdzić w DNS, czy domena w ogóle odbiera pocztę (rekordy MX, niejawny MX lub null MX).
Ograniczenia
- Poprawny format nie oznacza, że skrzynka istnieje. Wie to tylko serwer odbiorcy, a odpytywanie go przez SMTP jest zawodne (domeny catch-all, greylisting) i prowadzi do blokowania adresu IP, więc tego nie robimy.
- Walidacja składni działa w przeglądarce; adresy nie są nigdzie wysyłane. Opcjonalne sprawdzenie domeny wysyła tylko część po znaku @.
Najczęstsze pytania
Jeśli adres jest tu poprawny, to czy poczta do niego dojdzie?
Niekoniecznie. Poprawna składnia oznacza, że taki adres może istnieć. Skrzynka może jednak nie istnieć, być pełna lub wyłączona, a domena może nie przyjmować poczty. To ostatnie sprawdzisz opcją sprawdzenia domeny; istnienie skrzynki potwierdzi tylko prawdziwa wiadomość (lub e-mail z potwierdzeniem).
Dlaczego nie sprawdzacie skrzynek przez SMTP?
Wiele serwerów akceptuje każdego odbiorcę (catch-all) albo opóźnia nieznanych nadawców, więc odpowiedź często jest błędna. Powtarzane odpytywanie wygląda też jak atak zbierania adresów i kończy się blokadą serwera, który pyta. Niezawodną metodą jest potwierdzenie (double opt-in).
Czy adresy w cudzysłowie i literały IP istnieją naprawdę?
Są zgodne ze standardem, np. "jan kowalski"@example.com albo user@[192.0.2.1], ale rzadkie. Wiele stron i usług je odrzuca, dlatego akceptujemy je z ostrzeżeniem.
Czy adres e-mail może zawierać polskie litery?
Tak. Domeny ze znakami Unicode (IDN) są obsługiwane wszędzie. Część lokalna ze znakami spoza ASCII wymaga obsługi SMTPUTF8 (RFC 6531) na każdym serwerze po drodze, co jest powszechne u dużych dostawców, ale nie wszędzie.
Czy wielkość liter przed @ ma znaczenie?
Standard pozwala serwerom rozróżniać wielkość liter, ale w praktyce prawie wszyscy dostawcy ją ignorują. Zapisuj adresy tak, jak je wpisano, a porównuj bez rozróżniania wielkości liter.