我正在尝试向多个收件人发送邮件,但我一直收到此错误验证:
我正在使用django-multi-email-field
包,并且不确定此解决方案会有所帮助。
拜托,看看我哪里出错了,并以正确的方式指导我。
真的很感谢你的帮助!
Django:1.10和Python:3.6
mail.py
from multi_email_field.forms import MultiEmailField
class mailHandler(forms.Form):
subject = forms.CharField(required=False)
receiver = MultiEmailField(label='Send to')
message = forms.CharField(widget=forms.Textarea(attrs={'cols': 50}),
required=False)
def __init__(self, *args, **kwargs):
super(mailHandler, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_method = 'post'
self.helper.form_class = 'form'
self.helper.layout = Layout(
Field(
None,
Div(
HTML('''
{% if messages %}
{% for message in messages %}
<center><p {% if message.tags %}
class="alert alert-{{ message.tags }}"
{% endif %}>{{ message }}
<button type="button" name="message" class="close" data-dismiss="alert" aria-hidden="true">×</button></p>
</center>{% endfor %}{% endif %}
'''),
Div('subject',
Field('receiver', placeholder='Email address',
required=True),
'message',
FormActions(
Submit('submit', 'Send', css_class='btn btn-lg btn-block'),
),
),
),
),
)
views.py
class mailPost(FormView):
success_url = '.'
form_class = mailHandler
template_name = 'post/post.html'
def form_valid(self, form):
messages.add_message(self.request, messages.SUCCESS, 'Email Sent!')
return super(mailPost, self).form_valid(form)
def form_invalid(self, form):
messages.add_message(self.request, messages.WARNING,
'Email not sent. Please try again.')
return super(mailPost, self).form_invalid(form)
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
if form.is_valid():
sender = "noreply@domain.com"
receiver = form.cleaned_data.get('receiver')
subject = form.cleaned_data.get('subject')
message = form.cleaned_data.get('message')
time = datetime.now()
asoc_pk = Association.objects.filter(asoc_name=self.request.user.association)
asoc = Association.objects.get(id=asoc_pk)
Email.objects.create(
sender=sender,
receiver=receiver,
subject=subject,
message=message,
association=asoc,
sentTime=time
)
msg = EmailMultiAlternatives(subject, message, sender, [receiver])
msg.send()
return self.form_valid(form)
else:
return self.form_invalid(form)
models.py
class Email(models.Model):
sender = models.CharField(max_length=254)
sentTime = models.DateTimeField(auto_now_add=True, blank=False)
subject = models.CharField(max_length=254)
receiver = models.CharField(max_length=254)
message = models.TextField()
association = models.ForeignKey(Association)
class Meta:
db_table = 'Email'