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

如何自定义Web2py邮件验证的默认文本?

如何自定义Web2py的邮件验证文本并添加可点击超链接?

嘿,我刚好对Web2py的邮件验证机制熟得很,这个问题其实很好解决——核心就是要把纯文本邮件改成HTML格式,同时替换默认的验证文本内容。咱们分两种场景来处理:

一、快速修改:直接通过auth.messages自定义内容

如果只是想替换文本并添加可点击链接,不用复杂样式,直接在初始化Auth的代码里修改auth.messages.verify_email即可。

找到你应用里初始化Auth的文件(通常是models/db.py),添加以下代码:

from gluon.tools import Auth, Mail

# 初始化Auth
auth = Auth(db)
# 初始化邮件发送器(如果还没设置)
auth.settings.mailer = Mail()
auth.settings.mailer.settings.sender = "你的发件邮箱@example.com"
auth.settings.mailer.settings.server = "smtp.example.com"  # 比如smtp.gmail.com
auth.settings.mailer.settings.login = "你的邮箱账号:密码"  # 或者用应用密码

# 关键:开启HTML邮件模式,这样链接才会被解析成可点击的
auth.settings.email_template = 'html'

# 自定义验证邮件的HTML内容
auth.messages.verify_email = """
<h3>欢迎您的加入!</h3>
<p>请点击下面的链接完成邮箱验证:</p>
<p><a href="{{=verify_url}}" style="color: #2563eb; text-decoration: none;">点击验证邮箱</a></p>
<p>如果无法点击,请复制以下链接到浏览器地址栏:</p>
<p><code>{{=verify_url}}</code></p>
"""

这里的{{=verify_url}}是Web2py Auth系统提供的模板变量,会自动替换成实际的验证链接,不用手动拼接。

二、进阶定制:使用自定义HTML模板文件

如果需要更复杂的邮件样式(比如加logo、自定义排版),可以创建独立的HTML模板文件:

  1. 在你的应用的views文件夹下新建一个模板文件,比如verify_email_template.html,内容示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>邮箱验证</title>
    <style>
        .email-container {
            max-width: 600px;
            margin: 0 auto;
            padding: 20px;
            font-family: "Microsoft Yahei", Arial, sans-serif;
            border: 1px solid #eee;
            border-radius: 8px;
        }
        .verify-button {
            display: inline-block;
            padding: 12px 24px;
            background-color: #2563eb;
            color: white;
            text-decoration: none;
            border-radius: 4px;
            margin: 20px 0;
        }
        .footer {
            margin-top: 30px;
            font-size: 12px;
            color: #666;
        }
    </style>
</head>
<body>
    <div class="email-container">
        <h2>嗨,{{=first_name}}!</h2>
        <p>感谢您的注册,请点击下方按钮完成邮箱验证:</p>
        <a href="{{=verify_url}}" class="verify-button">立即验证邮箱</a>
        <p>若按钮无法点击,请复制以下链接到浏览器:</p>
        <p>{{=verify_url}}</p>
        <div class="footer">
            <p>这是系统自动发送的邮件,请勿直接回复。</p>
        </div>
    </div>
</body>
</html>
  1. 回到Auth初始化代码,指定使用这个自定义模板:
# 替换默认模板为你自己的模板文件
auth.settings.verify_email_template = 'verify_email_template.html'
# 同样要开启HTML邮件模式
auth.settings.email_template = 'html'

注意事项

  • 一定要设置auth.settings.email_template = 'html',否则即使你写了HTML代码,邮件也会被当成纯文本发送,链接还是不可点击的。
  • 不要直接修改Web2py核心目录里的默认模板(比如gluon/contrib/login_methods/template_mail.html),因为Web2py更新后会覆盖你的修改,最好用上面两种自定义方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:36:36