除了设置“HTTPS”环境变量和SECURE_PROXY_SSL_HEADER SECURE_SSL_REDIRECT之外,当在adapter.py的render_mail()中使用.txt body时,在渲染模板和使用EmailMultiAlternatives()发送邮件时也可能出现问题。[1]:
https://github.com/pennersr/django-allauth/blob/master/allauth/account/adapter.py
for ext in ["html", "txt"]:
try:
template_name = "{0}_message.{1}".format(template_prefix, ext)
bodies[ext] = render_to_string(
template_name,
context,
self.request,
).strip()
except TemplateDoesNotExist:
if ext == "txt" and not bodies:
raise
if "txt" in bodies:
msg = EmailMultiAlternatives(subject, bodies["txt"], from_email, to)
if "html" in bodies:
msg.attach_alternative(bodies["html"], "text/html")
else:
msg = EmailMessage(subject, bodies["html"], from_email, to)
msg.content_subtype = "html"
return msg
例如,print(bodies[ext]) 的输出结果为:
"To confirm this is correct, go to " https://127.0.0.1:8000/accounts/confirm-email/MjI:1kS0Mj:M5YfUf9-1Vg_TlgjVrK6vAtaLDE/ "
但是在电子邮件上仍然是http://。
http://url7514.sitename/ls/click?upn=HJL2SSWV...
大多数设备也可以正常工作,因为应该仍然被重定向到https://,但是有些设备不行,所以必须在默认模板/帐户/电子邮件/电子邮件确认消息.txt中更改为HTML扩展名,
结果如下:
要确认这是正确的,请转到https://sitename/accounts/confirm-email/M...