Djangoにいくつかの画像を添付してメールを送信しようとしています。使用されるコードはこのスニペットです: http://www.djangosnippets.org/snippets/1063/ 。アタッチメントパーツがコアエラーを返す理由はわかりません。
コード。 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 私は何が間違っているのですか?
あなたが投稿したエラートレースバックは、実際のコードとは何の関係もないようです-それはミドルウェアに何らかの問題があるようです(おそらく500エラーページをレンダリングするとき)。
ただし、エラーの原因は、mail.attach
の呼び出しで未定義の変数名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)