2010-01-14 110 views
0

我有一個非常基本的電子郵件應用程序。這些表格類是:發送郵件中的「收件人」

class ContactForm(forms.Form): 
    name = forms.CharField(max_length=100) 
    subject = forms.CharField(max_length=100) 
    sender = forms.EmailField() 
    recipient_list = forms.EmailField() 
    message = forms.CharField(widget=forms.Textarea) 
    cc_myself = forms.BooleanField(initial=True) 

視圖功能如下:

def contact_name(request, id): 
    if request.method == 'POST': # If the form has been submitted... 
     form = ContactForm(request.POST) # A form bound to the POST data 
     if form.is_valid(): 
     name = form.cleaned_data['name'] 
     subject = form.cleaned_data['subject'] 
     message = form.cleaned_data['message'] 
     sender = form.cleaned_data['sender'] 
     cc_myself = form.cleaned_data['cc_myself'] 

     recipients = ['[email protected]'] 
     if cc_myself: 
      recipients.append(sender) 

     from django.core.mail import send_mail 
     send_mail(subject, message, sender, recipients) 
     return HttpResponseRedirect('/') # Redirect after POST 
else: 
    a=Entry.objects.get(pk=id) 
    form = ContactForm(instance=a) # An unbound form 
return render_to_response('email.html', { 
    'form': form, 
}) 

只要我在視圖中指定收件人,我沒有問題。但是,我希望將郵件發送到表單字段「收件人列表」中指定的地址。 當我構建這樣的視圖的代碼:

recipients = form.cleaned_data['recipient_list'] 
      if cc_myself: 
       recipients.append(sender) 

      from django.core.mail import send_mail 
      send_mail(subject, message, sender, recipients) 
      return HttpResponseRedirect('/') # Redirect after POST 

或:

recipients = request.POST.get('recipient_list', '') 
       if cc_myself: 
        recipients.append(sender) 

我得到錯誤 「 '的unicode' 對象沒有屬性 '追加'」。總之,它不起作用。我究竟做錯了什麼?

回答

0

由於recipient_listEmailField它清理爲unicode。但是你試圖把結果當成一個列表。所以,很顯然,構建一個清單出來的,一切的花花公子:

recipients = [form.cleaned_data['recipient_list']] 
if cc_myself: 
    recipients.append(sender) 

...但真的是你應該叫場recipient不是隻有1個可以輸入recipient list

+0

謝謝你Ozan。感謝你的幫助。 – kjarsenal 2010-01-15 00:23:23

相關問題