2010-03-16 27 views
22

Estoy tratando de enviar correos electrónicos con algunas imágenes adjuntas en django. El código utilizado es este fragmento: http://www.djangosnippets.org/snippets/1063/. No sé por qué la parte del archivo adjunto me devuelve un error central.Enviando correos electrónicos con datos adjuntos en django

El código. 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)) 

y la imagen de error aquí está el sitio: http://img201.imageshack.us/img201/6027/coreerror.png ¿Qué estoy haciendo mal?

Respuesta

24

El error de seguimiento que ha publicado no parece tener nada que ver con el código real - parece ser algún tipo de problema con el middleware (presumiblemente cuando se procesa la página de 500 errores).

Sin embargo, es posible que el error se deba al uso del nombre de variable indefinido attach en las llamadas al mail.attach. No tiene una variable attach; ha llamado a los archivos publicados image1, etc., por lo que debe usar esos nombres.

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

correcto, gracias! – owca

Cuestiones relacionadas