【问题标题】:How can I get the email configuration from the DB?如何从数据库中获取电子邮件配置?
【发布时间】:2016-09-10 05:12:53
【问题描述】:

我需要从我的数据库中获取EMAIL_HOST_USEREMAIL_HOSTEMAIL_PORT 等电子邮件配置,然后将这些值传递给settings.py 文件中的电子邮件配置。这可能吗?如果是,我该怎么做?

【问题讨论】:

  • 你不能这样做,因为 settings.py 是 django 加载来设置运行环境的第一件事。此时 Django 无法访问数据库。
  • 在某些时候,我尝试创建一个自定义 EmailBacked 以从数据库中获取值,但这没有用,但我不知道我是否做错了我的自定义 EmailBackend 或如果在自定义后端中无法完成,你知道一种方法来做我想做的事情吗?
  • 实现这一点还有很长的路要走,但不是通过 django。您不能使用 django 的任何部分或其功能,因为尚未加载 settings.py 文件。如果您愿意在 django 之外工作一点,我将继续研究它的方法(将涉及环境变量设置、使用 python 的自定义原始 SQL 查询,无论您的数据库是什么,它都可以直接使用 python)
  • 我正在考虑在 init 中使用变量来存储我的查询结果并将该变量用作全局变量以便可以在setting.py 中使用它们,类似这样吗?
  • 是的,你当然可以做到。用python编写sql脚本,它们就可以正常工作了。只是不要使用任何与 django 相关的东西。

标签: python django django-settings


【解决方案1】:

实际上,如果您像这样使用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()
   ....

【讨论】:

  • 很高兴能帮上忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
  • 2012-02-09
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多