it-swarm.asia

ما هي الشخصيات المسموح بها في عنوان البريد الإلكتروني؟

أنا لا أسأل عن التحقق الكامل من البريد الإلكتروني.

أريد فقط معرفة الأحرف المسموح بها في أجزاء user-name و server من عنوان البريد الإلكتروني. قد يكون هذا الأمر مبالغًا فيه ، فقد تأخذ عناوين البريد الإلكتروني أشكالًا أخرى ، لكنني لا أهتم. أنا أسأل فقط عن هذا النموذج البسيط: [email protected] (مثل [email protected]) والأحرف المسموح بها في كلا الجزأين.

535
WildWezyr

تنسيق عنوان البريد الإلكتروني هو: [email protected] (بحد أقصى 64 @ 255 حرفًا ، لا يزيد إجماليه عن 256 حرفًا).

يمكن أن يحتوي كل من local-part و domain-part على مجموعة مختلفة من الأحرف المسموح بها ، لكن هذا ليس كل شيء ، حيث توجد قواعد أكثر لذلك.

بشكل عام ، يمكن أن يحتوي الجزء المحلي على هذه ASCII] _ الأحرف:

  • الحروف اللاتينية الصغيرة: abcdefghijklmnopqrstuvwxyz ،
  • أحرف لاتينية كبيرة: ABCDEFGHIJKLMNOPQRSTUVWXYZ،
  • الأرقام: 0123456789 ،
  • أحرف خاصة: !#$%&'*+-/=?^_`{|}~ ،
  • نقطة: . (ليس الحرف الأول أو الأخير أو يتكرر ما لم يتم اقتباسه) ،
  • علامات الترقيم الفضائية مثل: "(),:;<>@[\] (مع بعض القيود) ،
  • التعليقات: () (مسموح به داخل الأقواس ، على سبيل المثال (comment)[email protected]).

جزء المجال:

  • الحروف اللاتينية الصغيرة: abcdefghijklmnopqrstuvwxyz ،
  • أحرف لاتينية كبيرة: ABCDEFGHIJKLMNOPQRSTUVWXYZ،
  • الأرقام: 0123456789 ،
  • الواصلة: - (ليس الحرف الأول أو الأخير) ،
  • يمكن أن يحتوي على عنوان IP محاط بأقواس مربعة: [email protected][192.168.2.1] أو [email protected][IPv6:2001:db8::1].

عناوين البريد الإلكتروني هذه صالحة:

وهذه الأمثلة غير صالحة:

  • Abc.example.com (بدون حرف @)
  • [email protected]@[email protected] (يُسمح @ واحد فقط خارج علامتي الاقتباس)
  • a"b(c)d,e:f;gi[j\k][email protected] (لا يُسمح بأي من الأحرف الخاصة في هذا الجزء المحلي خارج علامات اقتباس)
  • just"not"[email protected] (يجب فصل السلاسل المقتبسة بنقطة أو العنصر الوحيد الذي يتكون من الجزء المحلي)
  • this is"not\[email protected] (قد لا توجد مسافات أو علامات اقتباس أو خطوط مائلة للخلف إلا عندما تكون ضمن سلاسل مذكورة وتسبقها شرطة مائلة للخلف)
  • this\ still\"not\[email protected] (حتى إذا نجا (مسبوقة بخط مائل عكسي) ، يجب أن تظل المساحات وعروض الأسعار وخطوط مائلة عكسية مذكورة في علامات اقتباس)
  • [email protected] (نقطة مزدوجة قبل @) ؛ (مع تحذير: يتيح Gmail ذلك من خلال)
  • [email protected] (نقطة مزدوجة بعد @)
  • عنوان صالح مع مساحة بادئة
  • عنوان صالح مع مساحة زائدة

المصدر: عنوان البريد الإلكتروني في ويكيبيديا


RFC2822 Perl's للتحقق من صحة رسائل البريد الإلكتروني:

(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:
\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(
?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ 
\t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\0
31]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\
](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+
(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:
(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)
?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\
r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[
 \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)
?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t]
)*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[
 \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*
)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t]
)+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)
*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+
|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r
\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:
\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t
]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031
]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](
?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?
:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?
:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?
:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?
[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|
\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>
@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"
(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?
:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[
\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-
\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(
?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;
:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([
^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\"
.\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\
]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\
[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\
r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] 
\000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]
|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \0
00-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\
.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,
;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?
:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[
^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]
]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(
?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(
?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[
\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t
])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t
])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?
:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|
\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:
[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\
]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)
?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["
()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)
?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>
@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[
 \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,
;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t]
)*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\
".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?
(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".
\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:
\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\[
"()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])
*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])
+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\
.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z
|(?=[\["()<>@,;:\\".\[\]]))|\[([^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(
?:\r\n)?[ \t])*))*)?;\s*)

كان regexp الكامل لعناوين RFC2822 مجرد 3.7 كيلو.

راجع أيضًا: RFC 822 محلل عنوان البريد الإلكتروني في PHP .


التعريفات الرسمية لعناوين البريد الإلكتروني موجودة في:

  • RFC 5322 (القسمان 3.2.3 و 3.4.1 ، عفا عليه الزمن RFC 2822) ، RFC 5321 ، RFC 3696 ،
  • RFC 6531 (الأحرف المسموح بها).

ذات صلة:

37
kenorb

ويكيبيديا لديها مقال جيد حول هذا ، و المواصفات الرسمية هنا . من ويكيبيديا:

قد يستخدم الجزء المحلي من عنوان البريد الإلكتروني أيًا من هذه الأحرف ASCII:

  • الأحرف الإنجليزية الكبيرة والصغيرة (a-z، A-Z)
  • الأرقام من 0 إلى 9
  • الشخصيات ! # $٪ & '* + -/=؟ ^ _ `{| } ~
  • حرف . (نقطة ، فترة ، نقطة توقف كاملة) بشرط ألا تكون الشخصية الأولى أو الأخيرة ، وكذلك بشرط ألا تظهر مرتين أو أكثر على التوالي.

بالإضافة إلى ذلك ، يُسمح بالسلاسل المقتبسة (على سبيل المثال: "John Doe" @ example.com) ، مما يسمح بالشخصيات التي سيتم حظرها على خلاف ذلك ، ومع ذلك لا تظهر في الممارسات الشائعة. يحذر RFC 5321 أيضًا من أن "المضيف الذي يتوقع تلقي البريد يجب أن يتجنب تعريف صناديق البريد حيث يتطلب الجزء المحلي (أو يستخدم) نموذج السلسلة المقتبسة".

21
Mike Weller

يمكنك أن تبدأ من مقالة ويكيبيديا :

  • الأحرف الإنجليزية الكبيرة والصغيرة (a-z، A-Z)
  • الأرقام من 0 إلى 9
  • الشخصيات ! # $٪ & '* + -/=؟ ^ _ `{| } ~
  • حرف . (نقطة ، فترة ، نقطة توقف كاملة) بشرط ألا تكون الشخصية الأولى أو الأخيرة ، وكذلك بشرط ألا تظهر مرتين أو أكثر على التوالي.
12
Vladimir

جوجل تفعل شيئا مثيرا للاهتمام مع عناوين gmail.com الخاصة بهم. تسمح عناوين gmail.com فقط بالأحرف (a-z) والأرقام والفترات (التي يتم تجاهلها).

على سبيل المثال ، [email protected] هو نفسه [email protected] ، وسيتم إرسال كلا عنوانَي البريد الإلكتروني إلى صندوق البريد نفسه. يتم تسليم [email protected] أيضًا إلى صندوق البريد نفسه.

للإجابة على السؤال ، يعتمد الأمر في بعض الأحيان على الجهة المنفذة على مقدار معايير RFC التي يريدون اتباعها. يتوافق نمط عنوان gmail.com من Google مع المعايير. يفعلون ذلك بهذه الطريقة لتجنب الارتباك حيث يأخذ أشخاص مختلفون عناوين بريد إلكتروني مشابهة ، على سبيل المثال.

*** gmail.com accepting rules ***
[email protected]   (accepted)
[email protected]   (bounce and account can never be created)
[email protected]     (accepted)
D.Oy'[email protected]   (bounce and account can never be created)

يعد رابط ويكيبيديا مرجعًا جيدًا لما تسمح به عناوين البريد الإلكتروني عمومًا. http://en.wikipedia.org/wiki/Email_address

12
Angel Koh

اسم:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+-/=?^_`{|}~.

الخادم:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.
11
ThinkingStiff

التحقق من وجود @ و. ثم إرسال بريد إلكتروني لهم للتحقق.

ما زلت لا أستطيع استخدام عنوان البريد الإلكتروني .name الخاص بي على 20٪ من المواقع على الإنترنت لأن شخصًا ما قام بتفكيك التحقق من صحة بريده الإلكتروني أو لأنه يسبق أن تكون العناوين الجديدة صالحة.

9
Richard Maxwell

تشير الإجابة المقبولة إلى مقالة ويكيبيديا عند مناقشة الجزء المحلي الصحيح لعنوان البريد الإلكتروني ، لكن ويكيبيديا ليست سلطة في هذا الصدد.

IETF RFC 3696هي سلطة في هذا الشأن ، ويجب الرجوع إليها في القسم 3. القيود على عناوين البريد الإلكتروني في الصفحة 5:

تتكون عناوين البريد الإلكتروني المعاصرة من "جزء محلي" مفصول عن "جزء المجال" (اسم مجال مؤهل بالكامل) من خلال علامة تسجيل ("@"). يتوافق بناء جملة المجال مع ذلك الموجود في القسم السابق. تنطبق المخاوف المحددة في هذا القسم حول التصفية وقوائم الأسماء على أسماء النطاق المستخدمة في سياق البريد الإلكتروني أيضًا. يمكن أيضًا استبدال اسم المجال بعنوان IP بين قوسين معقوفين ، لكن هذا النموذج لا يشجعه بشدة إلا لأغراض الاختبار واستكشاف الأخطاء وإصلاحها.

قد يظهر الجزء المحلي باستخدام اصطلاحات الاقتباس الموضحة أدناه. نادراً ما يتم استخدام النماذج المقتبسة في الممارسة ، ولكنها مطلوبة لبعض الأغراض المشروعة. وبالتالي ، لا ينبغي رفضها في تصفية الإجراءات ولكن ، بدلاً من ذلك يجب أن يتم تمريرها إلى نظام البريد الإلكتروني للتقييم بواسطة المضيف الوجهة.

القاعدة الدقيقة هي أن أي ASCII حرف ، بما في ذلك أحرف التحكم ، قد تظهر مقتبسة ، أو في سلسلة مقتبسة. عند الحاجة إلى الاقتباس ، يتم استخدام حرف الخط المائل العكسي لاقتباس الحرف التالي. فمثلا

  Abc\@[email protected]

هو شكل صحيح من عنوان البريد الإلكتروني. قد تظهر مسافات فارغة ، كما هو الحال في

  Fred\ [email protected]

يمكن أيضًا استخدام حرف الخط المائل العكسي للاقتباس من نفسه ، على سبيل المثال ،

  Joe.\\[email protected]

بالإضافة إلى الاقتباس باستخدام حرف الخط المائل العكسي ، قد يتم استخدام أحرف الاقتباس المزدوج التقليدية لتطويق الجمل. فمثلا

  "[email protected]"@example.com

  "Fred Bloggs"@example.com

هي أشكال بديلة من المثالين الأولين أعلاه. نادراً ما يوصى بهذه النماذج المقتبسة ، وهي غير شائعة في الممارسة العملية ، ولكن ، كما تمت مناقشته أعلاه ، يجب أن تدعمها التطبيقات التي تعالج عناوين البريد الإلكتروني. على وجه الخصوص ، غالبًا ما تظهر النماذج المقتبسة في سياق العناوين المرتبطة بالتحولات من الأنظمة والسياقات الأخرى ؛ لا تزال تنشأ هذه المتطلبات الانتقالية ، ولأن النظام الذي يقبل عنوان البريد الإلكتروني المقدم من المستخدم لا يمكنه "معرفة" ما إذا كان هذا العنوان مرتبطًا بنظام قديم ، فيجب قبول نماذج العناوين وتوجيهها إلى بيئة البريد الإلكتروني.

بدون علامات اقتباس ، قد تتكون الأجزاء المحلية من أي مجموعة من
أحرف أبجدية أو أرقام أو أي من الأحرف الخاصة

  ! # $ % & ' * + - / = ?  ^ _ ` . { | } ~

قد تظهر الفترة (".") أيضًا ، ولكن لا يجوز استخدامها لبدء الجزء المحلي أو إنهائه ، كما قد لا تظهر فترتان أو أكثر من فترات متتالية. إذا تم ذكره بشكل مختلف ، فقد يظهر أي حرفASCII حرف (طباعة) بخلاف علامة ("@") أو الخط المائل العكسي أو علامة اقتباس مزدوجة أو فاصلة أو أقواس مربعة دون اقتباس. إذا كان يجب أن يظهر أي من قائمة الأحرف المستبعدة ، فيجب أن يتم اقتباسها. أشكال مثل

  [email protected]

  customer/[email protected]

  [email protected]

  !def!xyz%[email protected]

  [email protected]

صالحة ويتم عرضها بانتظام إلى حد ما ، ولكن يُسمح بأي من الأحرف المذكورة أعلاه.

كما فعل الآخرون ، أقوم بتقديم regex الذي يعمل لكل من PHP وجافا سكريبت للتحقق من صحة عناوين البريد الإلكتروني:

/^[a-z0-9!'#$%&*+\/=?^_`{|}~-]+(?:\.[a-z0-9!'#$%&*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-zA-Z]{2,}$/i
5
Mac

قراءة جيدة على المسألة .

مقتطفات:

These are all valid email addresses!

"Abc\@def"@example.com
"Fred Bloggs"@example.com
"Joe\\Blow"@example.com
"[email protected]"@example.com
customer/[email protected]
\[email protected]
!def!xyz%[email protected]
[email protected]
5
Luke Madhanga

الجواب القصير هو أن هناك 2 إجابات. هناك معيار واحد لما يجب عليك فعله. أي سلوك حكيم وسيُبعدك عن المشاكل. هناك معيار آخر (أوسع بكثير) للسلوك الذي يجب عليك قبوله دون إثارة المتاعب. تعمل هذه الثنائية لإرسال واستقبال البريد الإلكتروني ولكن لديها تطبيق واسع في الحياة.

للحصول على دليل جيد للعناوين التي تنشئها ؛ راجع: http://www.remote.org/jochen/mail/info/chars.html

لتصفية رسائل البريد الإلكتروني الصالحة ، ما عليك سوى تمرير أي شيء مفهوم بما يكفي لرؤية الخطوة التالية. أو ابدأ في قراءة مجموعة من RFCs ، والحذر ، وهنا يكون التنين.

5
Michael JAMES

كما يمكن العثور عليه في رابط ويكيبيديا هذا

قد يستخدم الجزء المحلي من عنوان البريد الإلكتروني أيًا من هذه الأحرف ASCII:

  • الأحرف اللاتينية الكبيرة والصغيرة A إلى Z و a إلى z؛

  • الأرقام 0 إلى 9 ؛

  • أحرف خاصة !#$%&'*+-/=?^_`{|}~ ؛

  • dot . ، بشرط ألا يكون الحرف الأول أو الأخير ما لم يتم الاستشهاد به ، ونص أيضًا على أنه لا يظهر على التوالي ما لم يتم اقتباسه (على سبيل المثال ، [email protected] غير مسموح به ولكن "John..Doe"@example.com مسموح به) ؛

  • يُسمح بوجود مسافات و "(),:;<>@[\] مع قيود (يُسمح بها فقط داخل سلسلة مُقتبسة ، كما هو موصوف في الفقرة أدناه ، وبالإضافة إلى ذلك ، يجب أن تسبق الخط المائل العكسي أو الاقتباس المزدوج بخط مائل عكسي) ؛

  • يُسمح بالتعليقات مع أقواس في كلا طرفي الجزء المحلي ؛ مثلا john.smith(comment)@example.com و (comment)[email protected] كلاهما يعادل [email protected].

بالإضافة إلى ما ورد أعلاه ASCII أحرف ، يُسمح باستخدام الأحرف الدولية أعلى من U + 007F ، المشفرة كـ UTF-8 ، بواسطة RFC 6531 ، على الرغم من أن أنظمة البريد قد تقيد الأحرف التي يجب استخدامها عند تعيين محلي - أجزاء.

قد توجد سلسلة مقتبسة ككيان مفصول بنقطة داخل الجزء المحلي ، أو قد توجد عندما تكون علامات الاقتباس الخارجية هي الأحرف الأبعد للجزء المحلي (على سبيل المثال ، abc."defghi"[email protected] أو "abcdefghixyz"@example.com غير مسموح بها ؛ على العكس ، abc"defghi"[email protected] غير مسموح بها ؛ abc\"def\"[email protected]). السلاسل والأحرف المقتبسة مع ذلك ، غير شائعة الاستخدام. RFC 5321 يحذر أيضًا من أن "المضيف الذي يتوقع تلقي البريد يجب أن يتفادى تعريف صناديق البريد حيث يتطلب الجزء المحلي (أو يستخدم) نموذج السلسلة المقتبسة".

يتم التعامل مع الجزء المحلي postmaster بشكل خاص — فهو غير حساس لحالة الأحرف ، ويجب إعادة توجيهه إلى مسؤول البريد الإلكتروني للنطاق. من الناحية الفنية ، تكون جميع الأجزاء المحلية الأخرى حساسة لحالة الأحرف ، وبالتالي [email protected] و [email protected] تحدد صناديق بريد مختلفة ؛ ومع ذلك ، تعامل العديد من المؤسسات الأحرف الكبيرة والصغيرة كـ مكافئ.

على الرغم من المجموعة الواسعة من الشخصيات الخاصة الصالحة تقنياً ؛ المنظمات وخدمات البريد وخوادم البريد وعملاء البريد في الممارسة العملية في كثير من الأحيان لا تقبل كل منهم. على سبيل المثال ، لا يسمح Windows Live Hotmail إلا بإنشاء عناوين البريد الإلكتروني باستخدام الأحرف الهجائية والنقطة (.) وتسطير أسفل السطر (_) والوصل (-). النصيحة الشائعة هي تجنب استخدام بعض الأحرف الخاصة لتجنب خطر رسائل البريد الإلكتروني المرفوضة.

3
Yash Patel

من أجل البساطة ، أقوم بتعقيم التقديم عن طريق إزالة جميع النصوص ضمن علامات تنصيص مزدوجة وتلك المرتبطة بعلامات اقتباس مزدوجة قبل التحقق من الصحة ، ووضع kibosh على عمليات إرسال عنوان البريد الإلكتروني بناءً على ما هو مسموح به. فقط لأن شخصًا ما يمكنه الحصول على John .. "The * $ hizzle * Bizzle" .. عنوان [email protected] لا يعني أنني يجب أن أسمح بذلك في نظامي. نحن نعيش في المستقبل حيث قد يستغرق وقتًا أقل للحصول على عنوان بريد إلكتروني مجاني بدلاً من القيام بعمل جيد في محو مؤخرتك. ولا يبدو الأمر كما لو أن معايير البريد الإلكتروني لا يتم لصقها بجوار المدخلات التي توضح ما هو مسموح وما هو غير مسموح به.

أقوم أيضًا بتعقيم ما لا يسمح به على وجه التحديد العديد من طلبات RFC بعد إزالة المواد المقتبسة. يبدو أن قائمة الشخصيات والأنماط غير المسموح بها على وجه التحديد قائمة أقصر بكثير للاختبار من أجلها.

غير مسموح بها:

    local part starts with a period ( [email protected] )
    local part ends with a period   ( [email protected] )
    two or more periods in series   ( [email protected] )
    &’`*|/                          ( some&thing`[email protected] )
    more than one @                 ( [email protected]@Host.com )
    :%                              ( mo:characters%mo:[email protected] )

في المثال المعطى:

John.."The*$hizzle*Bizzle"[email protected] --> [email protected]

[email protected] --> [email protected]

يعد إرسال رسالة تأكيد عبر البريد الإلكتروني إلى النتيجة المتبقية عند محاولة إضافة أو تغيير عنوان البريد الإلكتروني طريقة جيدة لمعرفة ما إذا كان الرمز الخاص بك يمكنه التعامل مع عنوان البريد الإلكتروني المقدم. إذا نجحت رسالة البريد الإلكتروني في التحقق من الصحة بعد عدة جولات من التعقيم حسب الحاجة ، فافتح هذا التأكيد. إذا تم إرجاع طلب من رابط التأكيد ، فيمكن نقل البريد الإلكتروني الجديد من الحالة أو التخزين المطهر || المؤقت ليصبح بريدًا إلكترونيًا حقيقيًا ومخزنًا من الدرجة الأولى.

يمكن إرسال إشعار بفشل أو نجاح تغيير عنوان البريد الإلكتروني إلى عنوان البريد الإلكتروني القديم إذا كنت تريد أن تكون موضع تقدير. قد تسقط إعدادات الحساب غير المؤكدة خارج النظام كمحاولات فاشلة بالكامل بعد فترة زمنية معقولة.

لا أسمح برسائل البريد الإلكتروني ذات الرائحة الكريهة على نظامي ، وربما هذا هو مجرد إهدار الأموال. لكن ، 99.9٪ من الوقت يفعلون فقط الشيء الصحيح ولديهم بريد إلكتروني لا يدفع حدود المطابقة إلى الحافة باستخدام سيناريوهات توافق حالة الحافة. كن حذرًا من regex DDoS ، فهذا مكان يمكن أن تتعرض فيه للمشاكل. وهذا يتعلق بالشيء الثالث الذي أقوم به ، لقد وضعت حدًا لطول المدة التي أرغب فيها في معالجة أي بريد إلكتروني واحد. إذا احتاج الأمر إلى إبطاء أجهزتي للتحقق من صحتها - فلن يتجاوز منطق نقطة نهاية واجهة برمجة التطبيقات للبيانات الواردة.

تحرير: استمرت هذه الإجابة في التورط في كونها "سيئة" ، وربما كانت تستحقها. ربما لا تزال سيئة ، وربما لا.

0
BradChesney79

الإجابة هي (تقريبًا) ALL (7 بت ASCII).
إذا كانت قواعد التضمين "... مسموح بها بموجب بعض/أي/لا شيء ..."

فقط بالنظر إلى إحدى قواعد التضمين المحتملة العديدة للنص المسموح به في الجزء "نص المجال" في RFC 5322 في الجزء العلوي من الصفحة 17 نجد:

dtext          =   %d33-90 /          ; Printable US-ASCII
                   %d94-126 /         ;  characters not including
                   obs-dtext          ;  "[", "]", or "\"

تُستخدم الأحرف الثلاثة المفقودة فقط في هذا الوصف في [] حرفيًا للمجال ، لتكوين زوج مقتبس \ ، وحرف المسافة البيضاء (٪ d32). مع ذلك ، يتم استخدام النطاق بأكمله 32-126 (عشري). يظهر شرط مماثل كـ "qtext" و "ctext". ويسمح أيضا العديد من الشخصيات السيطرة/المستخدمة. تظهر قائمة بأحرف التحكم هذه في الصفحة 31 القسم 4.1 من RFC 5322 كـ obs-NO-WS-CTL.

obs-NO-WS-CTL  =   %d1-8 /            ; US-ASCII control
                   %d11 /             ;  characters that do not
                   %d12 /             ;  include the carriage
                   %d14-31 /          ;  return, line feed, and
                   %d127              ;  white space characters

يُسمح بكل رموز التحكم هذه كما هو مذكور في بداية القسم 3.5:

.... MAY be used, the use of US-ASCII control characters (values
     1 through 8, 11, 12, and 14 through 31) is discouraged ....

وبالتالي فإن قاعدة التضمين هذه "واسعة للغاية". أو ، بمعنى آخر ، القاعدة المتوقعة "تبسيط للغاية".

0
user2350426