আপনি মন্তব্য এবং ভাঁজ সাদা জায়গা ( ) এবং সাধারণীকরণ ঠিকানা আক্ষরিক অগ্রাহ্য করতে পারেন যে শিথিলতা দিয়ে আরএফসি 5321 ( 5322 সালে পাওয়া কিছু ব্যাকরণের নিয়ম ) এর বিপরীতে একটি ইমেল ঠিকানা যাচাই করার জন্য একটি ফাংশন বা প্রোগ্রাম লিখুন CFWS
। এটি ব্যাকরণ দেয়
Mailbox = Local-part "@" ( Domain / address-literal )
Local-part = Dot-string / Quoted-string
Dot-string = Atom *("." Atom)
Atom = 1*atext
atext = ALPHA / DIGIT / ; Printable US-ASCII
"!" / "#" / ; characters not including
"$" / "%" / ; specials. Used for atoms.
"&" / "'" /
"*" / "+" /
"-" / "/" /
"=" / "?" /
"^" / "_" /
"`" / "{" /
"|" / "}" /
"~"
Quoted-string = DQUOTE *QcontentSMTP DQUOTE
QcontentSMTP = qtextSMTP / quoted-pairSMTP
qtextSMTP = %d32-33 / %d35-91 / %d93-126
quoted-pairSMTP = %d92 %d32-126
Domain = sub-domain *("." sub-domain)
sub-domain = Let-dig [Ldh-str]
Let-dig = ALPHA / DIGIT
Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
address-literal = "[" ( IPv4-address-literal / IPv6-address-literal ) "]"
IPv4-address-literal = Snum 3("." Snum)
IPv6-address-literal = "IPv6:" IPv6-addr
Snum = 1*3DIGIT
; representing a decimal integer value in the range 0 through 255
নোট: আমি করেছি সংজ্ঞা এড়ানো IPv6-addr
কারণ এই বিশেষ বোঝায় যা RFC ভুল এবং এটি নামঞ্জুর করে যেমন পায় ::1
। সঠিক বৈশিষ্টটি আরএফসি 2373 এ রয়েছে ।
বিধিনিষেধ
আপনি কোনও বিদ্যমান ইমেল বৈধতা লাইব্রেরি কল ব্যবহার করতে পারবেন না। তবে আপনি আইপি ঠিকানাগুলি পরীক্ষা করতে বিদ্যমান নেটওয়ার্ক লাইব্রেরি ব্যবহার করতে পারেন।
আপনি যদি কোনও ফাংশন / পদ্ধতি / অপারেটর / সমতুল্য লিখেন তবে এটি আপনার স্ট্রিংয়ের মতো হওয়া উচিত এবং আপনার ভাষার জন্য উপযুক্ত হিসাবে একটি বুলিয়ান বা সত্যবাদী / মিথ্যা মান প্রদান করতে হবে। আপনি যদি কোনও প্রোগ্রাম লিখেন তবে এটি স্টিডিনের থেকে একটি লাইন নেওয়া উচিত এবং প্রস্থান কোডের মাধ্যমে বৈধ বা অবৈধ নির্দেশ করতে হবে।
পরীক্ষার মামলা
কমপ্যাক্টনেস জন্য নিম্নলিখিত পরীক্ষার কেসগুলি ব্লকে তালিকাভুক্ত করা হয়। প্রথম ব্লকটি এমন কেস যা পাস করা উচিত:
email@domain.com
e@domain.com
firstname.lastname@domain.com
email@subdomain.domain.com
firstname+lastname@domain.com
email@123.123.123.123
email@[123.123.123.123]
"email"@domain.com
1234567890@domain.com
email@domain-one.com
_______@domain.com
email@domain.name
email@domain.co.jp
firstname-lastname@domain.com
""@domain.com
"e"@domain.com
"\@"@domain.com
email@domain
"Abc\@def"@example.com
"Fred Bloggs"@example.com
"Joe\\Blow"@example.com
"Abc@def"@example.com
customer/department=shipping@example.com
$A12345@example.com
!def!xyz%abc@example.com
_somename@example.com
_somename@[IPv6:::1]
fred+bloggs@abc.museum
email@d.com
?????@domain.com
নিম্নলিখিত পরীক্ষার কেসগুলি পাস করা উচিত নয়:
plainaddress
#@%^%#$@#$@#.com
@domain.com
Joe Smith <email@domain.com>
email.domain.com
email@domain@domain.com
.email@domain.com
email.@domain.com
email.email.@domain.com
email..email@domain.com
email@domain.com (Joe Smith)
email@-domain.com
email@domain..com
email@[IPv6:127.0.0.1]
email@[127.0.0]
email@[.127.0.0.1]
email@[127.0.0.1.]
email@IPv6:::1]
_somename@domain.com]
email@[256.123.123.123]
email@d.com
এবং ?????@domain.com
ব্যর্থ হওয়া উচিত ?
IPv6-addr
রেখে গেছে, এবং আইপিভি 6 ঠিকানা রয়েছে এমন পরীক্ষার কেস রয়েছে, সেগুলি কার্যকর করার কোনও সঠিক উপায় আছে কি?