规范化电子邮件地址意味着什么?

时间:2015-01-14 06:02:26

标签: django email

在此example中,Django讨论了使用self.normalize_email(email) self BaseUserManager {{1}}来规范化电子邮件地址的问题。当我搜索“规范化电子邮件”时,它似乎是所有平台上的一种做法。我看到了如何做的教程,但没有真正解释它是什么以及它用于什么。

2 个答案:

答案 0 :(得分:9)

对于电子邮件地址,foo@bar.comfoo@BAR.com是等效的;根据RFC规范,域部分不区分大小写。规范化意味着提供规范表示,以便任何两个等效的电子邮件字符串规范化为同一事物。

comments on the Django method解释:

  

通过小写其部分域名来规范化电子邮件地址。

答案 1 :(得分:0)

一种标准化电子邮件的应用程序是防止多次注册。如果您的应用程序允许公众注册,则您的应用程序可能会吸引“不友好的”类型,并且他们可能会尝试通过使用符号,大小写混合使用相同的电子邮件地址来多次注册同一电子邮件地址,以制作相同电子邮件地址的变体

Django's repository中,normalize_email的文档字符串如下:

  

通过小写其域部分来规范化电子邮件地址。

此方法的作用是小写电子邮件的域部分,因此该部分为case insensitive,因此请考虑以下示例:

>>> from django.contrib.auth.models import BaseUserManager
>>> BaseUserManager.normalize_email(user@example.com)
user@example.com
>>> BaseUserManager.normalize_email(user@EXAMPLE.COM)
user@example.com
>>> BaseUserManager.normalize_email(user@example.COM)
user@example.com
>>> BaseUserManager.normalize_email(user@EXAMPLE.com)
user@example.com
>>> BaseUserManager.normalize_email(user@ExAmPlE.CoM)
user@example.com

您会看到所有电子邮件都是等效的,因为@之后的大小写是无关紧要的。