I'm trying to send email with some images attached in django. Code used is this snippet : http://www.djangosnippets.org/snippets/1063/. Dunno why the attachment part returns me a core error.
The code. 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))
And here's error site image : http://img201.imageshack.us/img201/6027/coreerror.png What am I doing wrong ?
The error traceback you've posted doesn't seem to have anything to do with the actual code - it seems to be some sort of problem with middleware (presumably when rendering the 500 error page).
However, your error is probably caused by your use of the undefined variable name attach
in the calls to mail.attach
. You don't have an attach
variable - you've called the posted files image1
etc, so you should use those names.
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)