我正在"联系我们" Django
中的页面。我想允许管理员更改smtp
中的name
,password
,port
和django admin
。
因此,可以通过admin_contact
页面修改表格admin
。问题是我不知道如何设置EMAIL_HOST,EMAIL_PORT,EMAIL_HOST_USER和
settings.py
内的EMAIL_HOST_PASSWORD(使用模型admin_contact
)我必须设置为send_mail
中的views.py
方法。
有办法做到这一点吗?
答案 0 :(得分:0)
这是强制解决方案,但它解决了我的问题。
email_config.py
CONFIG_HOST = "smtp.gmail.com"
CONFIG_EMAIL = "mail@gmail.com"
CONFIG_PASS = "******"
CONFIG_PORT = "587"
<强> setting.py 强>
from email_config import CONFIG_HOST, CONFIG_EMAIL, CONFIG_PASS, CONFIG_PORT
...
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
# G-mail
EMAIL_HOST = CONFIG_HOST
EMAIL_HOST_USER = CUSTOM_EMAIL
EMAIL_HOST_PASSWORD = CONFIG_PASS
EMAIL_PORT = CONFIG_PORT
EMAIL_FROM_EMAIL = EMAIL_HOST_USER
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
<强>测试强>
> python manage.py shell
> from django.core.mail import EmailMessage
> msg = EmailMessage("Hi, man","This is a test message",to=["juan@gmail.com"])
> msg.send()
1
Apache和mod_wgsi需要在更改信息后重新启动
答案 1 :(得分:-2)
我非常确定,您不应该/不能这样做,因为这些设置是先收集的。但也许试试这个 -
EMAIL_HOST_USER = get_host_email()
def get_host_email():
try:
# fetch from database and return
except:
return 'foo@bar.com' # some default value
如果此方法有效,您可以尝试进行所有设置。