带有邮戳的 django rest-auth 电子邮件确认
django rest-auth email confirmation with postmark
我已经了解了一些关于如何覆盖电子邮件模板的信息,但它们似乎主要涉及创建 HTML 模板和覆盖文件位置。
我正在使用 postmark 的模板,它涉及发送带有电子邮件变量的 post 请求。我正在使用 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)
我的目标是将 postmark 模板也用于帐户确认和密码重置电子邮件,但我很难弄清楚如何覆盖发送方法。
rest_auth
仅向 allauth
提供 rest 框架接口。
您想覆盖 allauth 的电子邮件,而不是 rest_auth 的。
关于发送电子邮件的 allauth 文档 allauth.account.adapter.DefaultAccountAdapter.send_email()
您可以通过在 settings.py configuration 中设置 ACCOUNT_ADAPTER
并将 DefaultAccountAdapter
子类化来实现
from allauth.account.adapter import DefaultAccountAdapter
CustomAccountAdapter(DefaultAccountAdapter):
def send_mail(self, template_prefix, email, context):
# handle send mail the way you want to
pass
我已经了解了一些关于如何覆盖电子邮件模板的信息,但它们似乎主要涉及创建 HTML 模板和覆盖文件位置。
我正在使用 postmark 的模板,它涉及发送带有电子邮件变量的 post 请求。我正在使用 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)
我的目标是将 postmark 模板也用于帐户确认和密码重置电子邮件,但我很难弄清楚如何覆盖发送方法。
rest_auth
仅向 allauth
提供 rest 框架接口。
您想覆盖 allauth 的电子邮件,而不是 rest_auth 的。
关于发送电子邮件的 allauth 文档 allauth.account.adapter.DefaultAccountAdapter.send_email()
您可以通过在 settings.py configuration 中设置 ACCOUNT_ADAPTER
并将 DefaultAccountAdapter
from allauth.account.adapter import DefaultAccountAdapter
CustomAccountAdapter(DefaultAccountAdapter):
def send_mail(self, template_prefix, email, context):
# handle send mail the way you want to
pass