You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 4.2邮件模板锚点链接显示为纯文本的解决求助

解决Django 4.2 HTML邮件显示为纯文本、链接不可点击的问题

核心问题分析

你的邮件模板中使用了转义的HTML字符(如<、>),导致渲染后的内容是纯文本形式的HTML代码,而非邮件客户端可解析的HTML结构。虽然你在代码中设置了email.content_subtype = 'html',但内容本身的格式错误使得客户端无法识别为HTML。

解决方案步骤

1. 修正邮件模板的HTML标签

将模板中所有转义的&lt;替换为<,&gt;替换为>,保留{% autoescape off %}确保Django不会转义模板变量和HTML结构。修改后的模板如下:

{% autoescape off %} 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <style>
        h1{
            color: chocolate;
        }
        p{
            font-size: 22px;
        }
    </style>
</head>
<body>
    <h1>Hey there, you are almost there!</h1>
    <p>Please click link to verify your account</p>
    <a class="underline" href="http://{{ domain }}{% url 'activate' uidb64=uid token=token%}">Verify Your Account</a> 
</body>
</html>

{% endautoescape %}

2. 修复链接的空格问题

原模板中{{ domain }}和{% url %}之间有空格,会导致生成的URL包含无效空格,需删除该空格(如上述模板所示)。

更可靠的方式是在视图中直接生成完整的绝对URL,避免手动拼接:
在sendActivationMail函数的context中添加完整链接:

def sendActivationMail(user, request):
    current_site = get_current_site(request)
    email_subject = 'Verify your account'
    uid = urlsafe_base64_encode(force_bytes(user.pk))
    token = generator_token.make_token(user)
    # 生成完整的激活URL
    activate_url = request.build_absolute_uri(
        reverse('activate', kwargs={'uidb64': uid, 'token': token})
    )
    email_body = render_to_string(
        'mail_temp/confirm_temp.html',
        {
            'user': user,
            'activate_url': activate_url,
        },
    )

    email = EmailMessage(
        subject=email_subject,
        body=email_body,
        from_email=settings.EMAIL_HOST_USER,
        to=[user.email]
    )
    email.content_subtype = 'html'
    email.send()

然后模板中直接使用该URL:

<a class="underline" href="{{ activate_url }}">Verify Your Account</a>

3. 确认视图中的HTML类型设置

你已正确设置email.content_subtype = 'html',此部分无需修改,确保邮件客户端识别内容为HTML格式。

验证效果

修改后重新发送邮件,邮件客户端会正确解析HTML结构,链接将变为可点击状态,样式也会生效。

内容的提问来源于stack exchange,提问作者theocode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:55:29