2016-02-27 60 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