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

What does it mean to normalize an email address?

在此 example 中,Django 讨论了使用 self.normalize_email(email) 规范化电子邮件地址,其中 selfBaseUserManager。当我搜索 "normalizing emails" 时,它似乎是所有平台的一种做法。我看到了有关如何操作的教程,但没有真正解释它是什么以及它的用途。

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

comments on the Django method说明:

Normalize the email address by lowercasing the domain part of it.

规范化电子邮件的一个应用是防止多次注册。如果您的应用程序允许 public 注册,您的应用程序可能会吸引“不友善”的类型,他们可能会尝试使用相同的电子邮件地址多次注册,方法是混合符号、大写和小写字母来制作变体相同的电子邮件地址。

来自 Django's repositorynormalize_email 的文档字符串如下:

Normalize the email address by lowercasing the domain part of it.

此方法所做的是将电子邮件的域部分小写,因此这部分是 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

如您所见,所有电子邮件都是相同的,因为 @ 之后的大小写无关紧要。