Django - 无法向多个收件人发送电子邮件

时间:2017-05-21 13:52:48

标签: django python-3.x email

我正在尝试向多个收件人发送邮件,但我一直收到此错误验证:

enter image description here

我正在使用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">&times;</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'    

0 个答案:

没有答案