3

django EmailField にも同じ小さな問題があります。

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

フォームでメールを受け付けませんでした

xx.@xxxxxxx.xxx

不正なフォームのエラー メッセージが返されますが、メールは正常に機能しています (メールは 15 歳です)。アットマークの前が問題だと思います。

バグですか?この種のメールで機能させるための解決策はありますか?

ありがとう :)

4

3 に答える 3

2

RFC 5321のセクション 4.2.1では、アドレスの「ローカル部分」には次の文法があります。

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


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

Atom           = 1*atext

私がこれを解釈する方法は、Atom には少なくとも 1 つの文字が必要であり、Dot-string は 1 つ以上の Atom の間にドットがあり、Local-part は Dot-string または Quoted-string のいずれかであるということです。

私がそれを正しく解釈すると、ドットの後に必ずアトムが続く必要があります。あなたの電子メール アドレスは正式に無効です。たとえば、2 つのドットが連続しても無効です。

GMail のようなサーバーがローカル部分のすべてのドットを除外してそれらのアドレスを受け入れることを選択したとしても、それは公式には有効ではありません。

ローカル部分 ( "xx."@xxxx.xxx) を引用しても機能するはずですが、カスタム バリデータと EmailField の独自のサブクラスを作成することもできます。

于 2014-11-20T09:48:21.433 に答える
0

他の人が言ったように、それは有効なメールアドレスではないかもしれません。しかし、回避策として、このようなことを行うことができます。私は正規表現を入れていませんが、うまくいけば、あなたはアイデアを得るでしょう:

from django.core.validators import EmailValidator
from django.db import models

class MyEmailValidator(EmailValidator):
    user_regex = re.compile('ALTERED REGULAR EXPRESSION')

class MyModel(models.Model):
    forms.EmailField(required=True, label="E-mail", validators=[MyEmailValidator()])

正規表現を作成する方法については、django.core.validators.EmailValidator を参照してください。

于 2014-11-20T09:55:32.173 に答える