diff --git a/modoboa/extensions/webmail/forms.py b/modoboa/extensions/webmail/forms.py index c377fc91b..2ff9d3ff0 100644 --- a/modoboa/extensions/webmail/forms.py +++ b/modoboa/extensions/webmail/forms.py @@ -14,6 +14,7 @@ from .lib import ( ImapEmail, create_mail_attachment ) +from validators import validate_email_list def html2plaintext(content): """HTML to plain text translation. @@ -76,13 +77,14 @@ def make_body_images_inline(body): return lxml.html.tostring(html), parts + class ComposeMailForm(forms.Form): """Compose mail form.""" - to = forms.CharField(label=_("To")) - cc = forms.CharField(label=_("Cc"), required=False) - cci = forms.CharField(label=_("Cci"), required=False) + to = forms.CharField(label=_("To"), validators=[validate_email_list]) + cc = forms.CharField(label=_("Cc"), required=False, validators=[validate_email_list]) + cci = forms.CharField(label=_("Cci"), required=False, validators=[validate_email_list]) subject = forms.CharField( label=_("Subject"), max_length=255, diff --git a/modoboa/extensions/webmail/templates/webmail/compose.html b/modoboa/extensions/webmail/templates/webmail/compose.html index 4fb607529..06db8600f 100644 --- a/modoboa/extensions/webmail/templates/webmail/compose.html +++ b/modoboa/extensions/webmail/templates/webmail/compose.html @@ -8,7 +8,7 @@
- +
{% if not form.cc.value %}
diff --git a/modoboa/extensions/webmail/validators.py b/modoboa/extensions/webmail/validators.py new file mode 100644 index 000000000..8c6c25dc1 --- /dev/null +++ b/modoboa/extensions/webmail/validators.py @@ -0,0 +1,17 @@ +from django.utils.encoding import force_text +from django.utils.deconstruct import deconstructible +from django.core.validators import validate_email +from email.utils import getaddresses + +class EmailListValidator(object): + """ + Validate a comma separated list of email + """ + def __call__(self, value): + value = force_text(value) + emails = map(unicode.strip, value.split(',')) + addresses = getaddresses(emails) + [ validate_email(e) for r, e in addresses ] + +validate_email_list = EmailListValidator() +