发布请求所使用的电子邮件设置需要取决于我视图中的逻辑。因此,我想覆盖视图中的以下电子邮件设置,这些设置通常在settings.py中设置:
settings.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),我认为做到这一点的最佳方法如下:
views.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)
您能确认这是最合适的方法吗?
谢谢!
答案 0 :(得分:1)
您正在做的事情应该可以,但是不建议您alter settings at runtime。
您可以在调用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()
请参阅附件的文档链接以获取更多信息。