2016-02-27 64 views
0

我想附加文件并将其发送到电子邮件。 ,但它将我重定向到一个错误页面,即error.html。文件没有发送到电子邮件。你可以帮我解决这个错误。我是django的新手,你的帮助值得赞赏。三江源发送电子邮件附件使用Django:

models.py

class Email(models.Model): 
    email = models.EmailField() 
    subject = models.CharField(max_length=100) 
    attach = models.FileField() 
    message = models.CharField(max_length=250) 

forms.py

​​

views.py

def send_email(request): 
    if request.method != 'POST': 
     form = EmailForm() 
     context = { 
      "form": form 
     } 
     return render(request,'email.html', context) 

    form = EmailForm(request.POST, request.FILES) 

    if form.is_valid(): 
     subject = form.cleaned_data.get("subject") 
     message = form.cleaned_data.get("message") 
     email = form.cleaned_data.get("email") 
     a = request.FILES['attach'] 
     try: 


      mail = EmailMessage(subject, message, settings.EMAIL_HOST_USER, '[email protected]') 
      mail.attach_file(a.name, a.read(), a.content_type) 
      mail.send() 
      context ={ 
       "message": 'Sent email to %s' % email 
      } 
      return render(request,'email.html',context) 

     except: 
      context = { 
       "message": 'Either the attachment is too big or corrupt' 
      } 
      return render(request,'error.html',context) 

     return render(request,'email.html', {'message': 'Unable to send email. Please try again later'}) 
+3

删除except块以查看实际错误。 – Selcuk

+0

它将返回到email.html页面 –

回答

0

您已经使用attach_file。在那你必须提供文件的路径来传递这些参数a.name,a.read(),a.content_type。您只使用attach(a.name,a.read(),a.content_type)。欲了解更多信息,请阅读this