我编写了一个 APIView,用户可以在其中在我的网站上注册一个新帐户。当用户成功创建帐户时,我会向他们发送经过验证的电子邮件。代码如下
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
user = CustomUser.objects.get(email=serializer.data.get('email'))
token = RefreshToken.for_user(user).access_token
current_site = get_current_site(request).domain
relativeLink = reverse('verify-email')
absurl = 'http://' + current_site + \
relativeLink + '?token=' + str(token)
email_body = 'Hi ' + user.fullname + \
' Use link below to verify your email \n' + absurl
data = {
'to_email': user.email,
'email_body': email_body,
'email_subject': '[GetTheDeal] Verify your email'
}
send_email(data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
但是如果 send_email()
失败了。在我的情况下,因为我对我的 google 帐户使用了 2-factor auth。在这种情况下,我该怎么办?因为如果我不这样做,我会收到一个错误,但该帐户已成功创建,这对我来说没有意义。
这是send_email()
函数
def send_email(data):
email = EmailMessage(to=[data['to_email']],
subject=data['email_subject'], body=data['email_body'])
email.send()