2010-03-16 3 views
22

Я пытаюсь отправить электронное письмо с некоторыми изображениями, прикрепленными к django. Используемый код - этот фрагмент: http://www.djangosnippets.org/snippets/1063/. Не знаю, почему часть вложений возвращает мне основную ошибку.Отправка электронной почты с прикрепленным файлом в django

Код. 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)) 

А вот сайт ошибки Изображение: http://img201.imageshack.us/img201/6027/coreerror.png Что я делаю неправильно?

ответ

24

Отслеживание ошибок, которое вы опубликовали, похоже, не имеет никакого отношения к фактическому коду - похоже, это какая-то проблема с промежуточным программным обеспечением (предположительно при рендеринге страницы с ошибкой 500).

Однако ошибка, вероятно, вызвана использованием неопределенного имени переменной attach при звонках в mail.attach. У вас нет переменной attach - вы вызывали опубликованные файлы image1 и т. Д., Поэтому вы должны использовать эти имена.

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

правильный, спасибо! – owca

Смежные вопросы