2012-11-28 51 views
0

我的表格從我的settings.py中列出的帳戶發送電子郵件罰款,但在郵件中我只獲得表格的主題部分和消息部分。電子郵件中沒有發件人部分,所以我不知道誰會發送電子郵件。有誰知道如何解決這一問題?Django聯繫表格郵件錯誤

我forms.py

class ContactForm(forms.Form): 
    subject = forms.CharField(max_length=50) 
    message = forms.CharField() 
    sender = forms.EmailField() 

我Views.py接觸功能

def contact(request): 
if request.method == 'POST': 
    form = ContactForm(request.POST) 
    if form.is_valid(): 
     subject = form.cleaned_data['subject'] 
     message = form.cleaned_data['message'] 
     sender = form.cleaned_data['sender'] 
     recipients = ['[email protected]'] 
     send_mail(subject, message, sender, recipients) 
     return HttpResponseRedirect('/thanks/') 

else: 
    form = ContactForm() 
return render(request, "contact.html", {'form':form,}) 

我Settings.py

EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'mypassword' 

回答

0

該代碼應該可以正常工作。我已經在下面實現了同樣的事情,它的工作原理,但我有一個問題,你可能會有gmail。

send_mail(Subject, Message, '[email protected]', To) 

的問題是,爲了讓發件人是我使用的設置Gmail時指定發件人 - 「發件人」必須是在您的Gmail帳戶設置中批准的發件人列表。

希望有所幫助。

+0

感謝您的回覆,但問題實際上並非發送電子郵件。 send_mail()只允許發送兩個字段:Subject和Message。但是,我的表單有一個選項讓用戶列出他們的個人電子郵件,這是不允許傳入send_mail()函數的。有沒有辦法給send_mail()添加字段? – user1835351

+0

你想添加什麼其他領域?爲了獲得更大的靈活性,您可能需要查看EmailMessage類。 https://docs.djangoproject.com/en/dev/topics/email/?from=olddocs#emailmessage-objects – jondykeman

0

您將不得不使用EMAIL_HOST_USER作爲發件人,因爲您要從此用戶帳戶發送郵件。 請將您的設置導入到您的views.py中,如下所述。

import settings 

send_mail(subject, message, settings.EMAIL_HOST_USER, recipients) 
+0

您不一定必須使用EMAIL_HOST_USER作爲發件人。只要地址是gmail帳戶設置中的核準發件人,它也可以工作。我有一個應用程序通過相同的gmail連接設置從多個備用帳戶發送。 – jondykeman

+0

你是正確的,可以使用,但在這裏,而不是硬編碼send_mail()函數的值,最好使用settings.py文件中定義的變量。而且,必須傳遞給send_mail()函數的form_email參數始終是一個字符串。 – Prateek