2017-09-04 92 views
0

在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://stackoverflow.com/a/22287776/3371056

但也許有一些模式做這樣的事情是不同的。

回答

0

如果你想把它保存在數據庫中,比如配置,建議使用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)