2012-03-30 6 views
8

RFCs 5321, 5322 i 6531 mają złożone reguły sprawdzania poprawności adresów e-mail. Oni:Historycznie, dlaczego specyfikacje RFC dotyczące adresów e-mail były tak skomplikowane?

  • pozwalają creating comments wewnątrz adresu email
  • oferta skomplikowane przepisy restrykcyjne dla symboli: "() ,:;<>@[\]
  • treat postmaster LocalPart jako wielkości liter, ale wszystko inne jako wielkość liter
  • pozwalają groups of email addresses

Dzięki tym skomplikowanym regułom testowanie, czy dany ciąg znaków jest syntaktycznie poprawnym adresem e-mail według e RFC can't be performed używają tylko Wyrażeń regularnych.

Wygląda na to, że wiele z tych reguł nie jest obsługiwanych przez głównych dostawców poczty e-mail.

Historycznie biorąc, jakie były motywy tworzenia tak skomplikowanych reguł dotyczących adresów e-mail? Model Wikipedia article on the origins of email zdaje się sugerować, że nowoczesny standard z początku lat osiemdziesiątych miał na celu objęcie wszystkich starszych systemów poczty elektronicznej ich własnymi standardami i składniami.

Jednak wszyscy wdrażający standardy, dostawcy poczty e-mail i użytkownicy końcowi poczty e-mail mają żywotny interes w działaniu systemu, który jest łatwiejszy do osiągnięcia, gdy reguły nie są zbyt tajemnicze i można je łatwo przenieść do oprogramowania przechodzącego w skończoną operację. liczba testów, dlaczego więc mamy dzisiaj tak skomplikowany standard, że nikt go nie używa w pełnym zakresie?

Znów historycznie rzecz biorąc, XML został w dużej mierze zastąpiony przez JSON, którego sukces można częściowo przypisać prostocie jego gramatyki.

+0

Ponieważ dokumenty RFC mają obejmować wszystkie przypadki skrajne, a nie tylko "głównych dostawców"? – ceejayoz

+3

Wierzę, że jest to rozsądne i ważne pytanie, które najlepiej omówić z historycznym doświadczeniem. wymienione powyżej dokumenty RFC nie są jedynymi winnymi; RFC regulujące poprawne sposoby transkrypcji adresów IP są również zawiłe. co ciekawe, w świecie rzeczywistym aktywne są tylko niewielkie fragmenty RFC - praktycznie wszystkie adresy e-mailowe wyglądają jak "nazwa @ exxample.com", a wszystkie adresy IP jak "123.234.231.132". gdyby to pytanie nie zostało przedwcześnie zamknięte, moglibyśmy teraz cieszyć się żywą dyskusją na temat zalet i wad oraz historycznych podstaw tych bardzo złożonych dokumentów RFC. – flow

+0

Chociaż jest to interesujące i ważne pytanie (w rozumieniu szerszej społeczności oprogramowania), nie jest właściwe dla StackOverflow. – JasonMArcher

Odpowiedz

1

Jedyny pewny sposób, aby sprawdzić, czy dostarczony adres e-mail jest prawdziwy jest wysłać e-mail do niego i sprawdzić, czy użytkownik otrzyma go. Jednym z użytecznych sprawdzeń, które można wykonać na danym adresie, jest sprawdzenie, czy adres e-mailowy jest składniowo poprawny. Tak właśnie działa ten moduł.

Systemy wysyłające pocztę muszą obsługiwać pocztę wychodzącą dla wszystkich ważnych adresów. W przeciwieństwie do odpowiednich standardów, niektóre wadliwe systemy traktują pewne uzasadnione adresy jako nieważne i nie obsługują poczty na te adresy. ! Hotmail, na przykład, nie chce wysłać wiadomość do dowolnego adresu zawierającego wszelkie znaki następujących standardach dopuszczalnych: # $% */^ `{|} ~

tylko różne poziomy standardów, gdzie niektóre są? bardzo surowy, a więc złożony.

+0

, podczas gdy twoja odpowiedź jest poprawna technicznie, nie odpowiada na pytanie (co dotyczy składni adresów e-mail). wiedząc, że adres ulicy jest poprawny pod względem składni, jedno jest pewne, wiedząc, czy w tym miejscu znajduje się budynek, czy coś innego. – flow