我对 django EmailField 有同样的小问题。

forms.EmailField(required=True, label="E-mail", widget=forms.TextInput(attrs=

它不接受形式的电子邮件



它会返回错误格式的错误消息,但电子邮件正常工作(电子邮件已有 15 年历史)。
我认为 at-sign 之前的点是问题所在。

这是一个错误吗?是否有任何解决方案可以使其适用于此类电子邮件?

多谢 :)

最佳答案

RFC 5321 的 4.2.1 节中,地址的“本地部分”具有以下语法:

Local-part     = Dot-string / Quoted-string
                 ; MAY be case-sensitive


Dot-string     = Atom *("."  Atom)

Atom           = 1*atext
我的解释是,一个 Atom 必须至少有一个字符,一个点字符串是一个或多个原子,它们之间有点,而本地部分是一个点字符串或一个带引号的字符串。
如果我解释正确,那么原子必须始终跟在点之后,您的电子邮件地址正式无效,例如连续两个点也是无效的。
即使像 GMail 这样的服务器选择过滤掉本地部分中的所有点并接受这些地址,但这并不能使它们正式有效。
引用本地部分 ( "xx."@xxxx.xxx ) 应该可行,但您也可以编写自定义验证器和您自己的 EmailField 子类。

关于python - django EmailField 点之前@,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27036030/

10-12 21:49