邮件模板
为了定制特定操作的电子邮件主题和内容,可以使用模板来自定义 Gitea。这些功能的模板位于 custom
目录 下。
如果没有自定义的替代方案,Gitea 将使用内部模板作为默认模板。
自定义模板在 Gitea 启动时加载。对它们的更改在 Gitea 重新启动之前不会被识别。
支持模板的邮件通知
目前,以下通知事件使用模板:
操作名称 | 用途 |
---|---|
new | 创建了新的工单或合并请求。 |
comment | 在现有工单或合并请求中创建了新的评论。 |
close | 关闭了工单或合并请求。 |
reopen | 重新打开了工单或合并请求。 |
review | 在合并请求中进行审查的首要评论。 |
approve | 对合并请求进行批准的首要评论。 |
reject | 对合并请求提出更改请求的审查的首要评论。 |
code | 关于合并请求的代码的单个评论。 |
assigned | 用户被分配到工单或合并请求。 |
default | 未包括在上述类别中的任何操作,或者当对应类别的模板不存在时使用的模板。 |
特定消息类型的模板路径为:
custom/templates/mail/{操作类型}/{操作名称}.tmpl
其中 {操作类型}
是 issue
或 pull
(针对合并请求),{操作名称}
是上述列出的操作名称之一。
例如,有关合并请求中的评论的电子邮件的特定模板是:
custom/templates/mail/pull/comment.tmpl
然而,并不需要为每个操作类型/名称组合创建模板。 使用回退系统来选择适当的模板。在此列表中,将使用 第一个存在的 模板:
- 所需操作类型和操作名称的特定模板。
- 操作类型为
issue
和所需操作名称的模板。 - 所需操作类型和操作名称为
default
的模板。 - 操作类型为
issue
和操作名称为default
的模板。
唯一必需的模板是操作类型为 issue
操作名称为 default
的模板,除非用户在 custom
目录中覆盖了它。
模板语法
邮件模板是 UTF-8 编码的文本文件,需要遵循以下格式之一:
用于主题行的文本和宏
------------
用于邮件正文的文本和宏
或者
用于邮件正文的文本和宏
指定 主题 部分是可选的(因此也是虚线分隔符)。在使用时,主题 和 邮件正文 模板之间的分隔符需要至少三个虚线;分隔符行中不允许使用其他字符。
主题 和 邮件正文 由 Golang的模板引擎 解析,并提供了为每个通知组装的 元数据上下文。上下文包含以下元素:
名称 | 类型 | 可用性 | 用途 |
---|---|---|---|
.FallbackSubject | string | 始终可用 | 默认主题行。参见下文。 |
.Subject | string | 仅在正文中可用 | 解析后的 主题。 |
.Body | string | 始终可用 | 工单、合并请求或评论的消息,从 Markdown 解析为 HTML 并进行了清理。请勿与 邮件正文 混淆。 |
.Link | string | 始终可用 | 源工单、合并请求或评论的地址。 |
.Issue | models.Issue | 始终可用 | 产生通知的工单(或合并请求)。要获取特定于合并请求的数据(例如 HasMerged ),可以使用 .Issue.PullRequest ,但需要注意,如果工单 不是 合并请求,则该字段将为 nil 。 |
.Comment | models.Comment | 如果适用 | 如果通知是针对添加到工单或合并请求的评论,则其中包含有关评论的信息。 |
.IsPull | bool | 始终可用 | 如果邮件通知与合并请求关联(即 .Issue.PullRequest 不为 nil ),则为 true 。 |
.Repo | string | 始终可用 | 仓库的名称,包括所有者名称(例如 mike/stuff ) |
.User | models.User | 始终可用 | 事件来源仓库的所有者。要获取用户名(例如 mike ),可以使用 .User.Name 。 |
.Doer | models.User | 始终可用 | 执行触发通知事件的操作的用户。要获取用户名(例如 rhonda ),可以使用 .Doer.Name 。 |
.IsMention | bool | 始终可用 | 如果此通知仅是因为在评论中提到了用户而生成的,并且收件人未订阅源,则为 true 。如果收件人已订阅工单或仓库,则为 false 。 |
.SubjectPrefix | string | 始终可用 | 如果通知是关于除工单或合并请求创建之外的其他内容,则为 Re: ;否则为空字符串。 |
.ActionType | string | 始终可用 | "issue" 或 "pull" 。它将与实际的 操作类型 对应,与选择的模板无关。 |
.ActionName | string |