从Django发送时,Gmail无法使用html正确呈现电子邮件

noa*_*ale 2 html django gmail hotmail

我目前正在使用Django向忘记密码的用户发送电子邮件.所有其他电子邮件客户端使用中断正确呈现电子邮件.但是,Gmail似乎并不关心HTML,而是将所有文本整合在一起.

以下是在hotmail中呈现时电子邮件的外观:

鲍勃你好,

您收到此电子邮件是因为您(或假装有您的人)要求为您的帐户发送新密码.如果您没有请求此电子邮件,那么您可以通过support@mailapp.com告知我们.

要重置密码,请在下面输入临时密码进行登录.

TEMPORARY PASSWORD:seBDTZK4cc

登录后,您可以在"设置"中"帐户"下的"编辑个人资料"选项中更改密码.

- 邮件应用团队

但是在gmail中,它看起来像这样!:

您好Bob,您收到此电子邮件是因为您(或假装有您的人)请求为您的帐户发送新密码.如果您没有请求此电子邮件,那么您可以通过support@mailapp.com告诉我们.要重置您的密码,请在下面输入临时密码登录.TEMPORARY PASSWORD:seBDTZK4cc一旦您登录,您可以在"更改密码"在"设置"中的"帐户"下编辑"个人资料"选项.-邮件应用团队

这使得拥有Gmail帐户的用户感到困惑,因为临时密码正在与下一句话合并!

以下是我用来发送电子邮件的Django代码:

def resetpassword(request): 
    data = json.loads(request.raw_post_data) 
    requestusername = data['username'] 
    requestemail = data['email'] 
    if User.objects.filter(username = requestusername).exists():
        user_who_forgot_password = User.objects.get(username = requestusername) 
        if user_who_forgot_password.email == requestemail: 

            password = User.objects.make_random_password() 
            user_who_forgot_password.set_password(password) 
            user_who_forgot_password.save()
            email = EmailMessage('Password Reset On Mail App', 'Hello %s,</br></br>You are receiving this email because you have (or someone pretending to be you has) requested a new password to be sent for your account. If you did not request this email then you can let us know at support@mailapp.com.</br></br>To reset your password, enter the temporary password below to login.</br></br><b>TEMPORARY PASSWORD:</b> %s</br></br>Once you are logged in, you can change your password in the "Edit Profile" option under "Account" in Settings.</br></br>-The MailApp Team' % (user_who_forgot_password.username, password), to = ['{email}'.format(email=requestemail,)]) 
            email.content_subtype = "html" 
            email.send() 
            print 'Password Email Sent' 
            return HttpResponse("Success") 
        else: 
            return HttpResponse("No email found") 
    else: 
        return HttpResponse("No username found")
Run Code Online (Sandbox Code Playgroud)

如何修复它以便可以在Gmail中呈现它,使其像Hotmail一样正确显示?

SLa*_*aks 8

</br> 是无效的HTML.

你应该写<br>(没有结束标记),或XML样式<br />(自闭标记)