代码之家  ›  专栏  ›  技术社区  ›  Schalton

django rest auth电子邮件确认,带邮戳

  •  0
  • Schalton  · 技术社区  · 6 年前

    我已经看过很多关于如何覆盖电子邮件模板的内容,但它们似乎主要涉及创建HTML模板和覆盖文件位置。

    我使用的是邮戳模板,其中包括发送带有电子邮件变量的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)
    

    我的目标是使用邮戳模板进行账户确认;密码重置邮件,但我很难想出如何覆盖发送方法。

    0 回复  |  直到 6 年前
        1
  •  0
  •   Wade Williams hypermiler    6 年前

    rest_auth 仅向提供rest框架接口 allauth .

    你想覆盖allauth的邮件,而不是rest_auth的。

    allauth doc发送电子邮件 allauth.account.adapter.DefaultAccountAdapter.send_email()

    可以通过设置 ACCOUNT_ADAPTER 在你的设置中。py configuration 并将 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 
    
    推荐文章