python - Django OTP 正文消息的正确路径是什么?
问题描述
我正在做一个 Django 项目,我想向用户发送一封自定义 OTP 电子邮件。我已经尝试了所有我能想到的让 OTP 电子邮件不仅显示 OTP 代码而且还显示 HTML,但它只显示“文本”的路径
我已阅读文档,但找不到太多帮助。
设置.py:
text = 'Templates/email.txt'
html = 'Templates/email.html'
#OTP settings
OTP_EMAIL_SENDER=""
OTP_EMAIL_SUBJECT="Verification Code"
OTP_EMAIL_TOKEN_TEMPLATE=text
OTP_EMAIL_BODY_TEMPLATE=text
OTP_EMAIL_BODY_TEMPLATE_PATH=html
OTP_EMAIL_TOKEN_VALIDITY=300
电子邮件.html:
<tr>
<td bgcolor="#fdfbf0" style="padding:25px">
<p style="margin: 0;">
<!--the safe parameter allows us to generate html. always make sure you are passing valid html markup to the email body-->
{{email_body|safe}}
</p>
</td>
</tr>
电子邮件.txt:
{{email_body}}
解决方案
我遇到了同样的问题,我需要使用我的自定义电子邮件模板。负责发送电子邮件的代码在django_otp.plugins.otp_email.models.py文件中。您可以在EmailDevice Model 类中看到generate_challenge() 。我通过在send_mail()中添加html_message参数来解决它,如下所示:
django_otp.plugins.otp_email.models.py ...
send_mail(settings.OTP_EMAIL_SUBJECT,
strip_tags(body),
settings.OTP_EMAIL_SENDER,
[self.email or self.user.email],
html_message=body)
...
我的用例不同,所以我分叉了原始的django-otp包,然后将它安装到我的 docker 环境中。
您也可以通过编写自己的设备来做到这一点。这是扩展 Django-OTP文档的链接。
推荐阅读
- python - 为什么我使用 pygame.key.get_pressed() 时我的角色只向左移动?
- autofac - Autofac,从随机组件访问 ContainerBuilder
- powershell - 无法将整数与powershell中的运算符进行比较?
- pic18 - Uart1 和 Uart3 在 pic18fk67k40 中不能同时工作
- c# - 如何修复事件处理程序中损坏的自动完成和跳过的代码
- angular - 在 ngFor 循环中安排一些元素
- spring - 如果处理程序中发生异常,则无法将消息路由到标头中定义的错误通道
- python - 如何修复“字典对象没有属性键”
- django - 如果在 Django 中间件中检测到未知 GET,如何阻止黑客访问
- javascript - 来自父类对象的javascript构造函数