如何在生产中为客户设置SMTP?

问题描述:

在Django中设置客户的SMTP的最佳做法是什么?如何在生产中为客户设置SMTP?

我可以让它们自己设置吗?我不能在内部设置,否则他们不得不告诉我他们的密码。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_PORT = 587 
EMAIL_HOST_USER = '****@gmail.com' 
EMAIL_HOST_PASSWORD = '*****' 

有没有办法?也许允许他们通过Django管理员设置凭据?

编辑:

目前,最好的办法看起来像创建一个单独的对象,我们称之为config,存储凭据和管理页面进行注册,允许管理员设置他们的凭据。然后,创建一个类发送消息和做这样的事情:

backend = EmailBackend(host=config.host, port=config.port, username=config.username, 
          password=config.password, use_tls=config.use_tls, fail_silently=config.fail_silently) 
email = EmailMessage(subject='subj', body='body', from_email=from_email, to=to, 
      connection=backend) 

喜欢这里 https://*.com/a/22287776/3371056

但也许有一些模式做这样的事情是不同的。

如果你想把它保存在数据库中,比如配置,建议使用django-constance,好处是你可以编辑,只能编辑(不添加\删除界面)。

这里是代码你的conf由Django的康斯坦斯views.py如果你使用它:

from constance import LazyConfig 
config = LazyConfig() 


def put_value(key, value): 
    setattr(config, key, value) 


def get_value(key): 
    return getattr(config, key)