امروز مجبور شدم کمی حفاری کنم تا آن را پیدا کنم ، اما آیا می دانید طول معتبر آدرس ایمیل چیست؟ این در واقع به قطعات شکسته شده است ... Name@Domain.com. این با توجه به RFC2822.
- نام می تواند از 1 تا 64 نویسه باشد.
- دامنه می تواند از 1 تا 255 نویسه باشد.
وای ... این بدان معنی است که این می تواند یک آدرس ایمیل معتبر باشد:
loremaipsumadolorasitaametbaconsectetueraadipiscin
gaelitanullamc @ loremaipsumadolorasitaametbaconsect
etueraadipiscingaelitcaSedaidametusautanisiavehicu
laaluctuscaPellentesqueatinciduntbadiamaidacondimn
tumarutrumbaturpisamassaaconsectetueraarcubaeuatin
ciduntaliberoaaugueavestibulumaeratca فازلوساتین
ciduntaturpisaduis.com
این را روی کارت ویزیت قرار دهید! از قضا ، بیشتر قسمتهای آدرس ایمیل به 100 نویسه در وب محدود می شوند. در واقع معتبر نیست. اگر می خواهید یک آدرس ایمیل را برای ساخت مناسب با استفاده از PHP تأیید کنید ، من این قطعه را در شبکه پیدا کردم:
http://derrick.pallas.us/email-validator/ # مجوز: مجوز رایگان علمی 2.1 # نسخه: 2006-12-01a if (! ereg (''. '^'. '[-! # $٪ & \) '* + / 0-9 =؟ AZ ^ _a-z {|} ~]'. '(\\.؟ [-! # $٪ & \' * + / 0-9 =؟ AZ ^ _a-z { |} ~]) * '.' @ '.' [a-zA-Z] (-؟ [a-zA-Z0-9]) * '.' (\\. [a-zA-Z] (- ؟ [a-zA-Z0-9]) *) + '.' $ '، $ email)) false false؛ list ($ local، $ domain) = split ("@"، $ email، 2)؛ if (strlen ($ local)> 64 || strlen ($ domain)> 255) false false برگردد ؛ if ($ check &&! gethostbynamel ($ domain)) false برمی گردد؛ بازگشت درست؛ # پایان ###### }
خوشحالم که کسی آن را مفید دانسته است! جستجوی "email regexp" در گوگل، عبارات منظم زیادی را نشان می دهد که با RFC همگام نیستند.
بله، من متوجه عدم انطباق سایر راه حل ها با RFC نیز شدم. با این حال، متوجه شده ام که حتی این regex غیر معمول است و استاندارد نیست. به یاد دارم که خواندن regex واقعی (اجازه دادن <،>، و غیره) برای اکثر فرآیندها بسیار فشرده است.
با این حال، به طور خلاصه و قطعا راه حلی نوشته شده است که باید برای هر برنامه ایمیل سازمانی قابل قبول باشد.
با تشکر، دوباره!
داگ
متأسفانه، من آن صفحه را به RFC اشتباهی پیوند دادم (2821 به جای 2822) اما اصلاح شد. براکت های زاویه نمی توانند بخشی از قسمت های محلی یا دامنه آدرس ایمیل باشند. بلکه نشان دهنده نقاط نشانه گذاری هستند، یعنی می توان از آنها برای احاطه کردن آدرس ایمیل (مثلاً در ایمیل خوان شما) استفاده کرد، دقیقاً به این دلیل که نمی توانند بخشی از آدرس باشند.
یکی از چیزهایی که عملکرد من انجام نمی دهد این است که نگران شکل نقل قول آدرس های ایمیل - جایی که قسمت محلی در دو گیومه ظاهر می شود - است، زیرا RFC2821 اساساً می گوید که هیچ کس نباید آدرس خود را به این شکل بنویسد. (من معتقدم این فرم برای سازگاری با عقب است و اکنون تمرین بدی است.)
در واقع RFC2821 مرجع صحیح طول آدرس ایمیل است. من آن را در آنجا پیدا کردم، اما نه در RFC 2822.
در RFC 2821 محدودیتی برای طول آدرس در دستورات MAIL و RCPT 256 کاراکتری وجود دارد. حد بالایی در طول آدرس معمولاً باید 256 در نظر گرفته شود.
— منبع: RFC 3696 Errata
همچنین، از آنجایی که RFC 2181 میگوید «نام دامنه کامل به 255 اکتت محدود میشود»، مکرراً توسط افراد (از جمله نویسندگان RFCهای دیگر) به اشتباه تعبیر میشود به این معنا که نام دامنه میتواند 255 کاراکتر باشد. اما RFC2181 در مورد نمایش در سطح پروتکل DNS روی سیم صحبت می کند، نه کاراکترهای قابل چاپ.
حداکثر طول یک نام دامنه 253 نویسه (254 شامل نقطه انتهایی، 255 اکتت روی سیم با تهی پایانه) است. و این همان چیزی است که BIND و DiG پیاده سازی می کنند.
توسعه دهندگان که اندازه بالقوه آدرس های ایمیل را دست کم می گیرند چند مشکل ایجاد کرده است: http://www.eph.co.uk/resources/email-address-le...
حدس میزنم اگر آدرس ایمیل شما چیزی مانند "jack1983@aol.com" باشد، ممکن است فکر کنید حتی 30 کاراکتر سخاوتمندانه است.
با عرض پوزش، آدرس فوق خراب است…
توسعه دهندگان که اندازه بالقوه آدرس های ایمیل را دست کم می گیرند چند مشکل ایجاد کرده است:
http://www.eph.co.uk/resources/email-address-leng...
حدس میزنم اگر آدرس ایمیل شما چیزی مانند "jack1983@aol.com" باشد، ممکن است فکر کنید حتی 30 کاراکتر سخاوتمندانه است.
فقط این پست را پیدا کردم ... خنده دار. حالا میخواهم بدانم آیا میتوانم آن دامنه را ثبت کنم؟