2010-03-16 48 views
22

Tôi đang cố gắng gửi email với một số hình ảnh được đính kèm trong django. Mã được sử dụng là đoạn mã này: http://www.djangosnippets.org/snippets/1063/. Dunno lý do tại sao phần đính kèm trả về cho tôi một lỗi cốt lõi.Gửi email có tệp đính kèm trong django

Mã. forms.py

from django import forms 
from common import slugify_unique 
from django.conf import settings 
from django.core.cache import cache 
from django.contrib.admin import widgets  
from django.shortcuts import get_object_or_404         

class WorkForm(forms.Form): 
    name = forms.CharField(label='Name and surname', max_length=64, required = True) 
    nick = forms.CharField(label='nickname', max_length=40, required = True) 
    email = forms.EmailField(label='e-mail', required = True) 
    image1 = forms.Field(label='sample photo', widget = forms.FileInput, required = True) 
    image2 = forms.Field(label='sample photo', widget = forms.FileInput, required = True) 
    image3 = forms.Field(label='sample photo', widget = forms.FileInput, required = True) 
    text = forms.CharField(label='Few words about you', widget=forms.Textarea, required = False) 

views.py

from forms import WorkForm 
from django.core.mail import send_mail, EmailMessage 


def work(request): 
    template = 'other/work.html'        

    if request.method == 'POST': 
     form = WorkForm(request.POST, request.FILES) 
     if form.is_valid(): 
      name = form.cleaned_data['name'] 
      nick = form.cleaned_data['nick'] 
      email = form.cleaned_data['email'] 
      subject = 'Work' 
      text = form.cleaned_data['text'] 
      image1 = request.FILES['image1'] 
      image2 = request.FILES['image2'] 
      image3 = request.FILES['image3'] 
      try: 
       mail = EmailMessage(subject, text, ['EMAIL_ADDRESS'], [email]) 
       mail.attach(image1.name, attach.read(), attach.content_type) 
       mail.attach(image2.name, attach.read(), attach.content_type) 
       mail.attach(image3.name, attach.read(), attach.content_type) 
       mail.send() 
       template = 'other/mail_sent.html' 
      except: 
       return "Attachment error" 
      return render_to_response(template, {'form':form}, 
           context_instance=RequestContext(request)) 
    else: 
     form = WorkForm()        
    return render_to_response(template, {'form':form}, 
        context_instance=RequestContext(request)) 

Và đây là trang web lỗi hình ảnh: http://img201.imageshack.us/img201/6027/coreerror.png Tôi đang làm gì sai?

Trả lời

24

Traceback lỗi bạn đã đăng dường như không liên quan gì đến mã thực tế - dường như có một số vấn đề với phần mềm trung gian (có thể là khi hiển thị trang lỗi 500).

Tuy nhiên, lỗi của bạn có thể do việc bạn sử dụng tên biến không xác định attach trong các cuộc gọi đến mail.attach. Bạn không có biến số attach - bạn đã gọi các tệp được đăng image1 v.v., vì vậy bạn nên sử dụng các tên đó.

mail.attach(image1.name, image1.read(), image1.content_type) 
mail.attach(image2.name, image2.read(), image2.content_type) 
mail.attach(image3.name, image3.read(), image3.content_type) 
+0

chính xác, cảm ơn! – owca

Các vấn đề liên quan