跳转至

自定义邮件和短信模板

Authany 会在验证邮箱地址、使用一次性密码(OTP)或魔法链接登录、重置密码等事件中发送邮件和短信。您可以在管理台中完全自定义这些消息的文案、品牌样式和排版。

要设置自定义邮件或短信模板,登录 Authany 管理台,然后进入品牌 > 邮件/短信模板。

模板的工作原理

消息使用 Go 的模板引擎 渲染,翻译字符串还额外支持 ICU MessageFormat,用于处理复数形式和条件选择。您可以在同一个字符串中混合使用这两种语法:

  • 使用 {{ .Code }}(Go 模板)或 {Code}(ICU)插入一个值。
  • 使用 {{ if .HasPassword }}…{{ else }}…{{ end }}(Go 模板)或 {HasPassword, select, true{…} other{…}}(ICU)根据某个值进行分支判断。

这些模板都支持下文所描述的同一组变量。

模板变量

所有邮件和短信模板中都可用

Variable Description
{{ template "app.name" }} 您所在组织的名称。

组织名称以 {{ template "app.name" }} 的形式引用,而不是作为数据字段。它本身是一个可翻译的字符串,因此更改 app.name 的翻译会同时更新所有引用的位置。

各消息类型可用的变量

变量说明可用于
{{ .Code }}一次性验证码 / OTP 验证码。对于魔法链接和通过链接重置密码的消息,该验证码与链接中编码的验证码相同。邮箱/短信验证、OOB OTP、登录链接、忘记密码(链接和 OTP)、WhatsApp OTP
{{ .Link }}完整的魔法登录 / 验证 / 重置链接。登录链接和忘记密码链接消息
{{ .Email }}收件人的邮箱地址。邮件消息、新用户密码邮件
{{ .Phone }}收件人的电话号码。短信消息
{{ .Password }}管理员生成的密码。“向用户发送密码” 邮件(欢迎邮件)

高级变量

这些变量在渲染上下文中同样可用。内置模板不会使用它们,但您可以在自定义模板中引用。

Variable Type Description Available in
{{ .HasPassword }} boolean 如果用户已设置密码,则为 true。可用它在“重置”和“设置”密码的措辞之间切换。 忘记密码邮件/短信
{{ .Host }} string 请求来源的主机(例如 auth.example.com)。 OTP、验证、登录链接、忘记密码
{{ .ClientID }} string 发起该流程的 OAuth 客户端 ID。 仅交互式 Web 流程
{{ .ClientName }} string OAuth 客户端的显示名称。 仅交互式 Web 流程
{{ .State }} string OAuth 的 state 参数。 仅交互式 Web 流程
{{ .XState }} string Authany 的 x_state 参数。 仅交互式 Web 流程
{{ .UILocales }} string 请求的 ui_locales。 仅交互式 Web 流程

标记为“仅交互式 Web 流程”的变量,其值来自请求的 UI 参数。当消息是在交互式流程之外发送时(例如通过 Admin API),这些变量为空。

各消息可用的变量

邮件/短信模板页面中,每种消息可以使用的变量。

Message Variables you can use
通过链接重置密码 {{ .Link }}、{{ .Code }}
通过 OTP 重置密码 {{ .Code }}
验证 {{ .Code }}
通过邮箱免密登录 {{ .Link }}(链接模式)或 {{ .Code }}(OTP 模式)
通过短信免密登录 {{ .Code }}
通过邮箱进行 MFA {{ .Code }}
通过短信进行 MFA {{ .Code }}
欢迎消息 {{ .Email }}、{{ .Password }}

示例

短信验证

{{ .Code }} is your {{ template "app.name" }} verification code.

使用 {{ .HasPassword }} 区分设置密码与重置密码

忘记密码(链接)消息同样用于让新用户设置首个密码。可以使用 {{ .HasPassword }} 来调整措辞。

支持两种等效写法:ICU 的 select(适合单行主题)和 Go 模板的 if(适合多行正文)

主题:

{HasPassword, select, true{Reset your account password} other{Set a password for your account}}

邮件内容:

{{ if .HasPassword }}
You requested to reset your password on {{ template "app.name" }}. Click the link below to choose a new password.
{{ else }}
Welcome to {{ template "app.name" }}! Click the link below to set a password for your account.
{{ end }}

{{ .Link }}

向中国大陆手机号码(+86)发送短信的重要提示:

发送到中国大陆号码的短信模板无法修改。因此,即使您设置了自定义模板,Authany 也始终会对中国大陆号码使用默认模板。除 OTP 以外的所有短信(例如密码重置链接)都无法送达。

对于使用非中国大陆手机号码的其他用户,Authany 会使用您的自定义短信模板。

以下是发送到中国大陆手机号码时使用的短信模板内容,与语言区域设置无关:

【简信】你的 {app-name} 登錄驗證碼是 {code}

之所以会有这种回退机制,是因为服务商必须事先向有关部门报备短信模板,才能向中国大陆号码发送短信。Authany 已经报备了默认短信模板,因此无需您采取任何额外操作即可正常送达。

如果企业用户仍希望自定义面向中国大陆号码的短信模板,可以联系我们了解更多详情。

向越南(+84)和台湾地区(+886)手机号码发送短信的重要提示

根据当地政府的监管要求,发往越南和台湾地区的所有短信正文中都必须包含应用名称。如果您在越南和台湾地区的用户收短信遇到问题,可以尝试在短信模板开头添加 [Authgear]。不包含 [Authgear] 的短信可能会被移动运营商拦截。例如,您的 OTP 消息可能如下所示:

[Authgear] {code} is your {app-name} one-time password.
Don't share it with anyone.
[Authgear] {code} là mã xác minh {app-name} của bạn.
Vui lòng không chia sẻ mã này với bất kỳ ai.
[Authgear] {code} 是你的 {app-name} 驗證碼。
切勿分享給任何人。

如果企业用户仍希望自定义面向越南和台湾地区号码的短信开头部分,可以联系我们了解更多详情。