Merge pull request #697 from vingeni/master

fixed #413 email checking for to/cc/cci in webmail
This commit is contained in:
Antoine Nguyen
2015-03-11 10:17:42 +01:00
3 changed files with 23 additions and 4 deletions
+5 -3
View File
@@ -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,
@@ -8,7 +8,7 @@
<div class="form-group{% if form.errors.to %} has-error{% endif %}">
<label class="col-sm-1 control-label" for="id_to">{% trans "To" %}</label>
<div class="col-sm-8">
<input id="id_to" name="to" class="form-control" value="{% if form.to.value %}{{ form.to.value }}{% endif %}"{% if form.to.errors %} placeholder="{% for error in form.to.errors %}{{ error }}{% endfor %}"{% endif %}>
<input id="id_to" name="to" class="form-control" value="{% if form.to.value %}{{ form.to.value }}{% endif %}"{% if form.to.errors %} placeholder="{% for error in form.to.errors %}{{ error }}{% endfor %}" title="{% for error in form.to.errors %}{{ error }}{% endfor %}"{% endif %}>
</div>
{% if not form.cc.value %}
<div class="col-sm-2">
+17
View File
@@ -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()