2013-05-10 44 views
0

一些事實:
我在本地主機上的工作與devserver。我有一個Django項目,電子郵件發送完美。我設置了一個新的Django項目,1.4.5,我將settings.py中的工作項目(EMAIL_HOST,EMAIL_PORT ...)的電子郵件設置複製/粘貼到新項目中,我使用manage.py打開一個shell,在django.core.mail的第一個項目中加載send_mail,它可以發送電子郵件(我在我的電子郵件客戶端接收它們),第二個電子郵件永遠不會發送。我嘗試了各種服務器,gmail和gandi。我直接用純Python代碼中的smtplib進行嘗試,並使用相同的設置。在發送帶有第一個項目和smtplib的郵件時,我可以看到該函數需要幾秒鐘才能在命令行中返回提示,但第二個項目會立即返回提示,這讓我覺得沒有任何事情發生。 Django的配置,以發送電子郵件

所以我的問題是什麼可能是錯誤的,在我的新項目的配置?去哪裏看?如果可能的話如何調試呢? (該send_mail函數只返回1,這是我發出的郵件的數量,有沒有辦法讓一個追溯或一些有用的錯誤消息?)

+0

只是一個問題,你是否在你的設置中使用了DEBUG = true? – lalo 2013-05-11 03:57:12

+0

@lalo在這兩個項目中我在服務器上的DEBUG = True和DEBUG = False(服務器上的行爲相同,電子郵件不適用於新項目)。 – Bastian 2013-05-11 09:21:49

回答

0

回答您的問題之一:

>>>如何調試?

使用pdb.set_trace()就在調用任何想要調試的任何內容之前。

+0

您可以擴展如何使用pdb與send_mail功能嗎? – Bastian 2013-05-10 13:34:45

+0

以我的經驗,我使用pdb停止執行代碼並開始調試。在我的問題中,沒有代碼執行,只是一個不返回可能對我有幫助的消息的函數。我沒有看到pdb如何在我使用它的方式幫助我。如果你知道一種不同的使用方法,請在此分享。 – Bastian 2013-05-10 13:44:45

+0

嗨巴斯蒂安,沒有什麼能阻止你使用'pdb'將步驟*轉換成*發送郵件的功能(它並不重要,如果它是一個django庫)。您可以在pdb提示符處使用'step'。 – 2013-05-10 14:05:57

0

我知道這很容易,它必須是一個設置,事實上它是。我沒有在那裏的一個來源,可能是它默認顯示在新的Django項目,我不知道,但我有

EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" 
在我的設置文件從我的電子郵件設置

,到目前爲止,我從來沒有進入它自己。將其更改爲SMTP或對其進行評論會使Django實際發送電子郵件。