2017-02-27 17 views
-1

在閱讀Django網站上的文檔後,我對如何使用我的Djagno應用程序配置SMTP後端有點困惑。我有一臺本地交換服務器,它運行的是使用Outlook作爲客戶端的業務域business.com。如何配置設置以便我使用公司電子郵件(本地交換機)在設置中發送電子郵件?使用Django SMTP

感謝您的幫助!

編輯:

這裏是連接錯誤:

email.send() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\mail\message.py", line 342, in send 
    return self.get_connection(fail_silently).send_messages([self]) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\mail\backends\smtp.py", line 100, in send_messages 
    new_conn_created = self.open() 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\mail\backends\smtp.py", line 58, in open 
    self.connection = connection_class(self.host, self.port, **connection_params) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\smtplib.py", line 251, in __init__ 
    (code, msg) = self.connect(host, port) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\smtplib.py", line 335, in connect 
    self.sock = self._get_socket(host, port, self.timeout) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\smtplib.py", line 306, in _get_socket 
    self.source_address) 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\socket.py", line 711, in create_connection 
    raise err 
    File "C:\Users\Evan\AppData\Local\Programs\Python\Python35-32\lib\socket.py", line 702, in create_connection 
    sock.connect(sa) 
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it 

這裏是我的代碼:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'business.com' 
EMAIL_PORT = '25' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'password' 

回答

3
  1. 提高到您的SMTP服務團隊的請求,以允許使用有效的發件人電子郵件ID從您的IP /域名發送電子郵件。
  2. 獲得批准後,從smtp服務團隊獲取EMAIL_HOST和EMAIL_PORT的詳細信息。並把它添加到settings.py中,如下圖所示:

    EMAIL_USE_TLS = True 
    EMAIL_HOST = 'business.com' 
    EMAIL_PORT = '25' #or 587 or any others 
    EMAIL_HOST_USER = '[email protected]' #Same as the sender email id 
    EMAIL_HOST_PASSWORD = 'yourpassword' #For exchange server pwd is not required 
    
  3. 運行交互模式:

    python manage.py shell 
    
  4. 導入EmailMessage模塊:

    from django.core.mail import EmailMessage 
    
  5. 現在嘗試發送電子郵件在以下代碼的幫助下:

    email = EmailMessage('Subject', 'Body', to=['[email protected]']) 
    email.send() 
    
+0

謝謝你的幫助。兩個問題,爲什麼我們使用TLS over SSL,並且我將不得不爲Django製作郵箱才能使用,更正? – GreenSaber

+0

1. TLS用於端口587,SSL用於465.兩者都用於安全連接到SMTP服務器。對於ref:https://docs.djangoproject.com/en/1.10/ref/settings/ 2.是的,你必須創建一個特定於你的項目的郵箱/分發列表,並在提出SMTP請求時給予同樣的內容。 –

+0

我試圖在shell中發送電子郵件,但是我得到WinError 100061,目標機器主動拒絕連接。我不知道爲什麼會發生這種情況,因爲我在我的電子郵件和應用程序郵箱之間手動發送了電子郵件。 – GreenSaber