规范化电子邮件地址是什么意思?

26
在这个示例中,Django使用self.normalize_email(email)来规范化电子邮件地址,其中selfBaseUserManager。当我搜索“规范化电子邮件”时,它似乎是所有平台的惯例。我看到了如何执行此操作的教程,但没有真正解释它是什么以及它的用途。
2个回答

46

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

Django方法的注释解释说:

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


8

规范化电子邮件的一个应用是防止多次注册。如果您的应用程序允许公众进行注册,您的应用程序可能会吸引“不友善”的人,他们可能会尝试使用符号、大写和小写混合来多次使用相同的电子邮件地址注册。

Django存储库中,normalize_email 的文档字符串如下:

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

这个方法所做的就是将电子邮件的域名部分转换为小写字母,因此这一部分不区分大小写,请考虑以下示例:

>>> 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

正如你所看到的,所有电子邮件都是等效的,因为 @ 后面的大小写不重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接