2016-05-13 51 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

相关问题