【问题标题】:How to set SMTP for customer in production?如何在生产中为客户设置 SMTP?
【发布时间】:2017-09-04 18:07:31
【问题描述】:

在 Django 中设置客户的 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://stackoverflow.com/a/22287776/3371056

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

【问题讨论】:

    标签: django django-admin django-email


    【解决方案1】:

    如果你想像配置一样保存在数据库中,推荐django-constance,优点是你可以编辑,只能由管理员编辑(没有添加\删除界面)。

    如果你使用它,这是你在 views.py 中通过 django-constance 获得的代码:

    from constance import LazyConfig
    config = LazyConfig()
    
    
    def put_value(key, value):
        setattr(config, key, value)
    
    
    def get_value(key):
        return getattr(config, key)
    

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 2021-11-10
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多