2013-03-15 205 views
3

我一直覺得Django電子郵件的行爲像電子郵件客戶端,這就是爲什麼您必須指定EMAIL_HOST,EMAIL_HOST_PASSWORD和EMAIL_HOST_USER。 Django應用程序的行爲就像一個普通的電子郵件客戶端,就像Outlook或蘋果郵件一樣......Django電子郵件客戶端

我測試的應用程序必須每隔一段時間發送一次電子郵件。但是當我在我的應用程序執行以下語句:

subject, from_email, to = 'hello', '[email protected]', '[email protected]' 
text_content = 'This is an important message.' 
html_content = '<p>This is an <strong>important</strong> message.</p>' 
msg = EmailMultiAlternatives(subject, text_content, from_email, [to]) 
msg.send() 

我越來越...

Traceback (most recent call last): 
File "<console>", line 1, in <module> 
. 
. 
SMTPRecipientsRefused: {'[email protected]': (504, '5.5.2 <wmsdesktop>: Helo command rejected: need fully-qualified hostname')} 

其中wmsdesktop是我的開發系統的名稱。從這個錯誤我得到的印象是,Django應用程序的行爲就像一個smtp服務器。

或者我在這裏錯過了一些東西。請在這裏說明一些...

+0

聽起來像您在設置中有錯誤。 – Brandon 2013-03-15 00:51:30

+0

請發佈您的設置代碼。我想這是因爲你的電子郵件設置 – princess 2013-03-15 05:35:24

回答

2

每個電子郵件「客戶端」在發送電子郵件時使用SMTP。

SMTP是電子郵件的發送方式。

所以,是的,Django在發送電子郵件時充當SMTP客戶端,而不是電子郵件(POP或IMAP)客戶端。

看起來您正在使用的STMP服務器僅限於訪問其他具有可通過反向DNS查找進行驗證的完全限定域名(example.com)的SMTP服務器。

這是SMTP服務器的一種非常常見的做法,因爲它有助於消除通常用於發送垃圾郵件的匿名SMTP服務器。

一般而言,此限制不適用於已通過身份驗證的用戶,儘管這取決於SMTP服務器。

+0

我知道每個電子郵件發件人都使用smtp。我不明白的是爲什麼錯誤信息。我爲我的普通桌面客戶端使用相同的smtp服務器。 – Henri 2013-03-15 01:07:07

+0

我知道每個電子郵件發件人都使用smtp。我不明白的是爲什麼錯誤信息。我爲我的普通桌面客戶端使用相同的smtp服務器,並且工作正常。該錯誤消息似乎表明Django應用程序正在發佈「helo wmsdesktop」,而wmsdesktop不是完全限定的主機名。過去我曾經在本地網絡中使用過另一個電子郵件服務器,但我從來沒有遇到過與此服務器有關的問題。 – Henri 2013-03-15 01:12:47

+0

查看我更新的答案。 – 2013-03-15 03:23:55

0
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'email password' 
+1

請在此答案中添加一些單詞(即沒有格式化爲代碼的任何內容)。 – andr 2013-03-15 05:58:37

相關問題