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

Django注册邮箱验证:如何发送带超链接的验证邮件

解决Django邮箱验证链接无法正常显示的问题

你的代码存在两个关键问题,导致超链接无法正确渲染:

  1. 字符串格式化未生效
    html.format(link=verify_link)执行后没有将结果重新赋值给html变量——Python字符串是不可变类型,格式化操作会返回新字符串,原变量不会自动更新。

  2. 未发送HTML格式邮件
    Django的send_mail默认发送纯文本邮件,HTML标签会被当作普通文本显示,必须通过html_message参数传递HTML内容,同时保留纯文本版本作为兼容 fallback。

修正后的代码如下:

from django.core.mail import send_mail
from django.conf import settings

def send_email_verification_mail(email, first_name, verify_link, exp):
    # 完成字符串格式化并赋值
    html = f"""
    <a href="{verify_link}">Click to verify</a>
    """
    subject = 'Your accounts need to be verified'
    # 纯文本版本(供不支持HTML的邮箱客户端)
    plain_message = f'Hi {first_name.capitalize()},\n\nClick on the link to verify your account \n \n{verify_link}\n \nThis link will expire in {exp}'
    # HTML版本
    html_message = f'Hi {first_name.capitalize()},<br><br>Click on the link to verify your account <br><br>{html}<br><br>This link will expire in {exp}'
    email_from = settings.EMAIL_HOST_USER
    recipient_list = [email]
    # 传递html_message参数发送HTML邮件
    send_mail(subject, plain_message, email_from, recipient_list, html_message=html_message)
    return True

额外说明

  • 同时提供纯文本和HTML版本,能兼容所有邮箱客户端,避免部分客户端无法显示HTML内容的情况。
  • 若邮件内容复杂,建议使用Django模板系统加载模板文件渲染,比直接拼接字符串更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:32:06