Envoyer des e-mails en pièce jointe à django
j'essaie d'envoyer un e-mail avec des images attachées à django. Code used is this snippet:http://www.djangosnippets.org/snippets/1063/. Je ne sais pas pourquoi la pièce jointe me renvoie une erreur de base.
le 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))
et voici l'image du site d'erreur : http://img201.imageshack.us/img201/6027/coreerror.png Ce que je fais mal ?
1 réponses
le traceback d'erreur que vous avez posté ne semble pas avoir quoi que ce soit à voir avec le code réel - il semble être une sorte de problème avec middleware (probablement lors du rendu de la page d'erreur 500).
cependant, votre erreur est probablement causée par votre utilisation du nom de la variable non définie attach
dans les appels à mail.attach
. Tu n'as pas de attach
variable-vous avez appelé les fichiers postés image1
etc, donc vous devriez utiliser ces noms.
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)