【发布时间】:2020-01-09 18:50:37
【问题描述】:
我已经看过很多关于如何覆盖电子邮件模板的内容,但它们似乎主要涉及创建 HTML 模板和覆盖文件位置。
我正在使用邮戳的模板,其中涉及发送带有电子邮件变量的发布请求。我正在使用 anymail 来处理这个问题,如下所示,其中有一个向我的客户服务地址发送电子邮件的表单:
class PartnerContact(APIView):
"""Sends email to Partners@***.com"""
@authentication_classes([])
@permission_classes([])
def post(self, request):
"""Sends Form Data"""
print("PartnerContact data", request.data)
status_code = status.HTTP_400_BAD_REQUEST
msg = EmailMessage(
from_email='Partners@***.com',
to=['Partners@***.com'],
reply_to=[request.data['email']]
)
msg.template_id = ***
logo = attach_inline_image_file(msg, finders.find("***.png"))
msg.merge_global_data = { **{**request.data, **{"logo":logo} } }
# <img alt="Logo" src="cid:{logo_cid}">
msg.send()
status_code = status.HTTP_200_OK
return Response(status=status_code)
我的目标是也为帐户确认和密码重置电子邮件使用邮戳模板,但我很难弄清楚如何覆盖发送方法。
【问题讨论】:
-
问题陈述不清楚。添加更多示例代码并清楚地阐述您的问题和预期输出。
-
我正在使用Django rest auth,并且想覆盖处理发送电子邮件的方法,并且我知道如何编写我想要替换它的内容,但不知道什么方法(s ) 来覆盖或在我这样做后如何引用它们。
-
听起来您的问题是:您如何覆盖django-rest-auth 发送密码/帐户电子邮件的位置,以便您可以添加django-anymail 特定选项,例如
template_id?看起来密码重置电子邮件来自PasswordResetSerializer通过django.contrib.auth的PasswordResetForm,所以你需要覆盖它。像这样的东西:stackoverflow.com/q/54153097/647002 -
(另外,仅供参考:在您的模板数据中包含
**request.data可能存在安全风险,因为它将包含 every GET 和 POST 参数。有人可能会使用它来提供模板合并您不想要的数据字段。最好只提取您的模板需要的特定 GET 或 POST 字段。)
标签: django django-rest-framework django-rest-auth postmark django-anymail