2016-05-13 113 views
1

我需要的是採取像EMAIL_HOST_USER,EMAIL_HOST,EMAIL_PORT等電子郵件配置從我的數據庫,然後將該值傳遞到settings.py文件中的電子郵件配置。這可能嗎?如果是,我該怎麼辦?如何從數據庫獲取電子郵件配置?

+1

你不能這樣做,因爲settings.py是django加載的第一個設置運行環境的東西。 Django此時無法訪問數據庫。 – RA123

+0

在某些時候,我試圖破壞一個自定義的'EmailBacked'來從數據庫中獲取值,但這不起作用,但我不知道我是否錯了我的自定義'EmailBackend',或者如果在自定義後端可以不行,你知道一個辦法去做我想做的事嗎? –

+1

有很長的路要做到這一點,但不是通過django。您不能使用django的任何部分或其功能,因爲settings.py文件尚未加載。如果你在django以外的地方工作很舒服,我會繼續研究它的方法(將涉及環境變量設置,使用python定製原始SQL查詢,無論你的數據庫是什麼,它是直接使用python) – RA123

回答

1

Actualy這是不是很難做,如果你使用django.core.mail.backends.smtp.EmailBackend這樣的:

from django.core.mail.backends.smtp import EmailBackend 

backend = EmailBackend(host = server.host, server.port, server.username, serer.password) 

一旦創建這樣的後端。關於如何發送消息,您有兩種選擇。首先是你可以調用send_messages()方法發送你的消息(或消息)。第二個是你可以告訴EmailMessage使用它作爲連接。 server.whatever從哪裏來?當然數據庫。

class EmailServer(models.Model): 
    host = models.CharFields() 
    .... 
+0

哦!這實際上很容易,謝謝 –

+0

很高興得到了幫助 – e4c5

相關問題