惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
GbyAI
GbyAI
C
Check Point Blog
M
MIT News - Artificial intelligence
T
The Blog of Author Tim Ferriss
Jina AI
Jina AI
博客园 - 【当耐特】
U
Unit 42
月光博客
月光博客
腾讯CDC
Y
Y Combinator Blog
小众软件
小众软件
博客园_首页
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
The GitHub Blog
The GitHub Blog
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
T
Tailwind CSS Blog

q2019的小站

宝塔面板安装使用Guacamole教程 银河麒麟系统下龙芯浏览器无法使用中文输入法的解决方案 关于存在于Wordpress 主题Argon中的越权修改漏洞 百度智能云服务器HAS组件卸载 JIEBA分词WASM版本编译全过程 UBUNTU使用国内腾讯镜像源安装GITLAB-CE 基于Qwen微调猫娘大模型 解决Argon主题出现Warning Undefined array key “HTTP_USER_AGENT” 报错 BookStack配置渲染Latex公式 NinjaForms问题解决(出现混乱的页面、Recaptcha 地址替换、Pjax导致表单不显示) roboflow/sports库的安装配置与使用
修改Authentik推送邮件的内容与样式
q2019 · 2026-05-29 · via q2019的小站

摘要

本文介绍了如何通过修改模版的方案自定义Authentik发送的各种邮件的内容与样式

前言

Authentik作为一个统一身份管理系统,在其日常的运行中,不可避免的需要向用户发送一些邮件(用户有时候需要通过邮箱来找回密码、接收2FA信息)。但是Authentik默认发送的邮件样式有些不美观,在部分邮箱客户端上面显示的邮件还有些不协调(如图1所示),并且我们也有自定义邮件通知内容以及图标样式等的需求。

所以这篇文章,我将会来介绍下如何对Authentik推送的邮件样式进行修改。本文适用于使用Docker Compose部署的Authentik实例,但是采用其他方案部署的实例也可以参考本文章的部分内容。

Authentik发送的密码重置邮件在Outlook(经典版)里头的显示界面

图1 Authentik发送的密码重置邮件在Outlook(经典版)里头的显示界面

大体思路

Authentik的后端是基于Django进行开发的,其使用了Django的模版语言来渲染部分页面[1]。而Authentik发送的邮件,也是基于模版生成的。所以我们需要自己设计一个邮件模版,然后让Authentik基于这个模版生成邮件发送给用户,即可达成自定义推送邮件的样式以及内容。

具体操作

准备自己的模版

首先,我们的邮件模版肯定要能接入变量,否则无法动态显示用户所需要的信息。Authentik邮件常用的变量如表1所示

变量名变量含义
{{ url }}发送给用户的链接(比如说重置密码 / 验证邮箱的链接)
{{ user.username }}触发此邮件操作的用户名
{{ user.email }}触发此邮件操作的用户邮箱
{{ expires }}邮件中的链接有效期
表1 Authentik邮件模版常用变量

根据上述的变量,我们先写一个简单的html模版出来。

{% load i18n %}
{% load humanize %}

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>重置密码</title>
</head>
<body>
  <p>{{ user.username }},您好:</p>

  <p>您正在请求重置您的账号密码。</p>

  <p>请打开下面的链接重置密码:</p>

  <p><a href="{{ url }}">{{ url }}</a></p>

  <p>如果不是您本人操作,请忽略此邮件。</p>

  <p>该链接将在 {{ expires|naturaltime }} 失效。</p>

  <p>此致,敬礼</p>
</body>
</html>

当然,自从Authentik 2024.2版本之后,Authentik支持发送同时包含txt与html内容的Multipart邮件[2]

如果想要发送Multipart邮件的话,只需再配置一个txt文件版本的模版,与html版本的文件名一致,但是文件扩展名为txt。txt版本的模版跟html版本的大部分变量都是相同的。我下面也给一个例子

{% load humanize %}

{{ user.username }},您好:

您正在请求重置您的账号密码。

请打开下面的链接重置密码:

{{ url }}

如果不是您本人操作,请忽略此邮件。

该链接将在 {{ expires|naturaltime }} 失效。

此致,敬礼

将您设计的两个文件分别准备好,并设置好文件名,比如说html版本叫做password_reset.html,然后txt版本叫做password_reset.txt。txt 版本的邮件不是必须的,可以只准备html版本。

将模版挂载到Authentik容器里

默认情况下,使用Authentik官方的compose.yml文件部署的实例默认会挂载compose.yml同级目录中的custom-templates目录到内部的模版目录中。

所以,我们找到当时启动Authentik的目录(即compose.yml所在的目录),找到custom-templates文件夹(如果没有这个目录,请手动创建),如图2所示,然后将刚刚我们准备的两个模版文件(password_reset.txt与password_reset.html)拷贝到这个目录中。

custom-templates文件夹截图

图2 custom-templates文件夹截图

编辑邮件发送阶段

将模版放置到文件夹内后,我们还要前往Authentik的管理员设置中进行一些设置。

首先前往管理员界面,在左侧栏目中,找到流程与阶段选项,点击其中的阶段,在阶段列表中找到一个类型为Email Stage的阶段(比如说我们这里的找回密码邮件发送阶段)[3],点击右侧的编辑按钮。如图3所示

Authentik超级管理员的后台的一个Email Stage阶段

图3 Authentik超级管理员的后台的一个Email Stage阶段

在新弹出来的阶段编辑界面中,可以展开位于底部的“阶段特定设置选项”,其中有一个模版设置项,如图4所示。点开设置项会弹出一个下拉单选列表,可以看到我们刚刚上传的模版,选中您需要的模版即可。

Authentik中的邮件阶段-模版设置项目截图

图4 Authentik中的邮件阶段-模版设置项目截图

选中后点击最底部更新按钮,完成邮件模版设置

测试修改后效果

我们触发一次邮件发送,可以看到邮件样式以及内容均是我们刚刚导入的模版的了,如图5所示。

我们提供的示例邮件模版生成的邮件在MAC自带的邮件应用中显示效果

图5 我们提供的示例邮件模版生成的邮件在MacOS自带的邮件应用中显示效果

查看邮件原文,可以看到邮件中包含txt以及html两个版本的邮件的内容,如图6所示。

根据提供的模版生成的邮件原文

图6 根据提供的模版生成的邮件原文