django - 在视图中覆盖 settings.py 电子邮件设置
问题描述
发布请求使用的电子邮件设置需要取决于我认为的逻辑。因此,我想在我的视图中覆盖以下电子邮件设置,这些设置通常在 settings.py 中设置:
设置.py
EMAIL_HOST_USER = 'user@website.com'
EMAIL_HOST_PASSWORD = '****************'
DEFAULT_FROM_EMAIL = 'user@website.com'
SERVER_EMAIL = 'user@website.com'
根据我的阅读(https://docs.djangoproject.com/en/2.1/topics/settings/#using-settings-without-setting-django-settings-module),我相信最好的方法如下:
视图.py
from django.conf import settings
def myview(request):
profile = ..logic that grab's user's profile...
settings.configure(EMAIL_HOST_USER = profile.email)
settings.configure(EMAIL_HOST_PASSWORD = profile.email_password)
settings.configure(DEFAULT_FROM_EMAIL = profile.email)
settings.configure(SERVER_EMAIL = profile.email)
你能确认这是最合适的方法吗?
谢谢!
解决方案
您所做的应该可以工作,但不建议在运行时更改设置。
您可以在调用send_mail()时传递所有这些值,因此无需修改设置。发送电子邮件时只需传递正确的关键字参数。
您还可以使用EmailMessage类进行更多控制。
您可以像这样创建 EmailMessage 的对象:
# from Django docs
from django.core.mail import EmailMessage
email = EmailMessage(
'Hello',
'Body goes here',
'from@example.com',
['to1@example.com', 'to2@example.com'],
['bcc@example.com'],
reply_to=['another@example.com'],
headers={'Message-ID': 'foo'},
)
email.send()
有关更多信息,请参阅文档的附加链接。
推荐阅读
- c# - VS 2019 version 16.8.1 falsely reports that App derives from Application, when it does NOT
- javascript - Cannot Delete Fields with Period in Key Name
- android-studio - Flutter not installing properly for Android Studio
- typescript - 值可以是函数或空时的打字稿错误
- r - 在 Shiny 中按列名过滤雷达图
- php - Mailchimp API send campaign
- r - different results between the paper and my code to calculate the p-value of Kolmogorov–Smirnov (K–S) test in R
- wordpress - Hide specific admin color scheme options without CSS?
- java - Only first test in class failed when running multiple classes
- c# - How can I get as much as close to 0 on float?