2016-01-18 86 views
0

我想通過Django的包裝發送電子郵件。Django梅勒找不到服務器

這是我的相關設置。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 

EMAIL_USE_TLS = True 

EMAIL_HOST = 'smtp.gmail.com' 

EMAIL_HOST_USER = '[email protected]' 

EMAIL_HOST_PASSWORD = 'mypassword' 

EMAIL_PORT = 587 

DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 

的電子郵件,而我試圖在視圖中的最基本的形式,以孤立:

from django.core.mail import send_mail 

def index(request): 

    subject = 'Subject' 
    message = 'message' 
    from_email = settings.DEFAULT_FROM_EMAIL 

    send_mail(subject, message, from_email, ['[email protected]']) 

    return render(request, "index.html") 

的電子郵件和密碼全部是合法的。當我執行代碼時,我收到一條錯誤消息:

SMTPAuthenticationError at /....*Link to sign into my account* 
Please log in via your web browser and\n5.7.14 then try again 

我這樣做了,但仍然得到相同的消息。我在應用中輸入的密碼是正確的。我需要在我的Gmail帳戶中配置什麼?

+1

返回呈現(...)行的顯示方式不正確,並且不會作爲索引函數的一部分返回。這與您在文件中的縮進是否相同? –

+0

返回渲染線是我的文件中的正確位置,只是在問題上的拼寫錯誤。 –

+1

在我的設置中,我必須設置EMAIL_PORT = 587才能通過帶有TLS的Gmail發送;根據我的理解,Gmail提供的端口有25個用於無加密,465個用於SSL,587個用於TLS –

回答

1

變化EMAIL_HOST = 'smtp.gmail.com 'EMAIL_HOST = 'smtp.gmail.com',我敢打賭,你的問題就會消失:)

編輯#1 您正在運行到身份驗證問題作爲EMAIL_USE_TLSTrue和Gmail只需要在端口587更改爲SMTP TLS連接到EMAIL_PORT = 587,你應該繞過這個問題。

編輯#2 您看到的錯誤可以通過您的Gmail設置修復。請參閱 - Django SMTPAuthenticationError

+0

對不起,浪費你的時間與錯字。這消除了錯誤信息,但讓我回到了在錯字發生之前我遇到的一個問題。當我嘗試發送電子郵件時,瀏覽器會永久重新加載。 @Ian Price –

+1

'send_mail(subject,message,from_email,['[email protected]'])'通常只會在視圖中調用或者由模型或表單上的方法觸發。如果您用完整的代碼發佈了一個新的問題,其中調用'send_mail'函數,我們可以幫助您。如果我幫助你,請標記爲完整。謝謝! –

+0

我只需要等一秒鐘,才能讓我接受答案。該功能在沒有郵件相關代碼的功能視圖中被調用。@ Ian Price –