2017-06-03 110 views
0

我試圖使用Outlook的憑據從Django發送SMTP電子郵件。我的代碼在本地主機上工作,但是當我將代碼上傳到生產服務器時,它不會。Django:生產服務器中的Outlook電子郵件smtp超時

如果我使用我的Gmail憑證,它也適用於生產,但它不適用於Outlook。所以,我認爲Outlook配置方式不同,但我不知道。

這是我的看法代碼:

def send_my_custom_email(): 

    connection = mail.get_connection(
     host = 'smtp-mail.outlook.com', 
     port = 25, 
     username = '[email protected]', 
     password = 'mypassword' , 
     ) 
    connection.open() 

    email2send = mail.EmailMessage('hello', 'hello', '[email protected]', to=['receiveremail'], connection=connection) 

    email2send.send() 
    connection.close() 

我知道,我的配置設置是正確的,因爲它可以從本地主機發送電子郵件。這些是我的settings.py:

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

我已經嘗試檢查Outlook設置,但我找不到有關SMTP使用的任何信息。

我確切的問題是:

  1. 展望需要在生產aditional的設置?
  2. 問題出在我的代碼或Outlook設置?
  3. 爲什麼它在localhost中工作,但它不在生產服務器中?

回答

1

Outlook.com只允許在端口587加密SMTP TLS連接,它甚至沒有在端口25聽,這就是爲什麼你會得到一個超時。

+0

端口25在本地主機上工作。我嘗試了您的建議,並且它仍然在端口587上超時。還有另一個設置用於加密的SMTP TLS? – Nazkter

+0

它在本地工作,因爲您的本地主機偵聽端口25. Outlook.com不會。您是否在使用端口587時指定了TLS? –

+0

我從本地主機指向outlook服務器,我沒有使用本地SMTP服務器。我知道specigy TLS的唯一方法是在我的settings.py中放入「EMAIL_USE_TLS = True」,我不知道它是否必須在連接設置中配置 – Nazkter

相關問題