---
stage: Growth
group: Engagement
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
title: 通知邮件
---
- 版本:Free, Premium, Ultimate
- 提供方式:GitLab.com, GitLab 自托管版, GitLab 专属版
通过邮件通知了解 GitLab 中的动态。
您可以接收关于 issues、merge requests、epics 和 designs 活动的更新。
关于 GitLab 管理员向用户发送消息的工具,请阅读
[GitLab 发送的邮件](../../administration/email_from_gitlab.md)。
在 GitLab 17.2 及更高版本中,[通知邮件受到速率限制](../../security/rate_limits.md#notification-emails),
每个项目或群组每用户每 24 小时最多发送一次。
## 谁会收到通知
当 issues、merge requests 或 epics 启用通知时,GitLab 会通知您这些资源上发生的操作。
您可能因以下原因收到通知:
- 您参与了 issue、merge request、epic 或 design。当您评论或编辑内容,或有人 <sup>1</sup> 提及您时,您会成为参与者。
- 您已在 issue、merge request 或 epic 中 [启用通知](#notifications-on-issues-merge-requests-and-epics)。
- 您已为 [项目](#change-level-of-project-notifications) 或 [群组](#group-notifications) 配置了通知设置。
- 您通过流水线邮件 [集成](../project/integrations/_index.md) 订阅了群组或项目流水线通知。
GitLab 不会在以下情况发送通知:
- 账户是项目机器人。
- 账户是使用默认邮箱的服务账户。
- 账户被屏蔽(封禁)或停用。
- [评论被编辑以包含用户提及](../discussions/_index.md#edit-a-comment-to-add-a-mention)。
- 管理员已屏蔽通知。
## 全局通知设置
您的全局通知设置是默认设置,除非您为特定项目或群组指定了不同设置。
例如,您可能希望接收特定项目中所有活动的通知,而对于其他项目,仅在您被点名提及时才通知。
这些通知设置仅对您生效,不影响其他用户收到的通知。
### 编辑通知设置
要编辑您的通知设置:
1. 在左侧边栏,点击您的头像。
1. 选择 **偏好设置**。
1. 在左侧边栏,选择 **通知**。
1. 在 **全局通知邮件** 中,输入接收通知的邮箱地址。
默认使用您的主邮箱地址。
1. 对于 **全局通知级别**,选择应用于您通知的默认 [通知级别](#notification-levels)。
1. 勾选 **接收关于自己活动的通知** 复选框以接收自己活动的通知。默认未勾选。
### 通知级别
对于每个项目和群组,您可以选择以下级别之一:
| 级别 | 说明 |
| ----------- | ----------- |
| 全局 | 应用您的默认全局设置。 |
| 关注 | 接收 [大多数活动](#events-not-included-in-the-watch-level) 的通知。 |
| 参与 | 接收您参与过的线程的通知。 |
| 被提及 | 当您在评论中被 [提及](../discussions/_index.md#mentions) 时接收通知。 |
| 禁用 | 不接收任何通知。 |
| 自定义 | 接收选定事件和您参与过的线程的通知。 |
### 通知范围
您可以为每个项目和群组选择不同的通知级别来调整通知范围。
通知范围按从最广泛到最具体的级别应用:
- 如果您未在发生活动的项目或群组中选择通知级别,则应用您的全局(或默认)通知级别。
- 您的群组设置会覆盖默认设置。
- 您的项目设置会覆盖群组设置。
当您为项目或子群组设置通知级别为 **全局** 时,它不会直接继承您的全局通知设置。
相反,它会向上继承层次结构中配置的下一个非全局通知级别,顺序如下:
1. 项目设置。
1. 父群组设置。
1. 祖先群组的设置(向上遍历层次结构)。
1. 全局通知设置作为最终回退设置。
例如,您将默认全局通知级别设置为 **关注**,群组和项目通知级别如下:
```mermaid
%%{init: { "fontFamily": "GitLab Sans", 'theme':'neutral' }}%%
flowchart TD
accTitle: 通知层次结构
accDescr: 群组、子群组和项目示例
N[默认/全局通知级别设置为关注]
N --> A
A[群组 A: 通知级别设置为全局]
A-. 继承关注级别 .-> N
A --> B[子群组 B: 通知级别设置为参与]
B --> C[项目 C: 通知级别设置为全局]
C-. 继承参与级别 .-> B项目 C 从子群组 B 继承 参与 通知级别。 它不会从您的全局通知设置继承 关注 通知级别。
群组通知
您可以为每个群组选择通知级别和邮箱地址。
更改群组通知级别
要为群组选择通知级别,请使用以下任一方法:
- 在左侧边栏,点击您的头像。
- 选择 偏好设置。
- 在左侧边栏,选择 通知。
- 在 群组 部分找到目标群组。
- 选择所需的 通知级别。
或:
- 在左侧边栏,点击 搜索或跳转 并找到您的群组。
- 点击铃图标( )旁边的通知下拉列表。
- 选择所需的 通知级别。
更改群组通知邮箱地址
您可以选择一个邮箱地址来接收您所属的每个群组的通知。 例如,如果您是自由职业者,可以使用群组通知将客户项目的邮件与其他邮件分开。
- 在左侧边栏,点击您的头像。
- 选择 偏好设置。
- 在左侧边栏,选择 通知。
- 在 群组 部分找到目标群组。
- 选择所需的邮箱地址。
更改项目通知级别
为帮助您保持最新状态,您可以为每个项目选择通知级别。
要为项目选择通知级别,请使用以下任一方法:
- 在左侧边栏,点击您的头像。
- 选择 偏好设置。
- 在左侧边栏,选择 通知。
- 在 项目 部分找到目标项目。
- 选择所需的 通知级别。
或:
- 在左侧边栏,点击 搜索或跳转 并找到您的项目。
- 点击铃图标( )旁边的通知下拉列表。
- 选择所需的 通知级别。
要了解如何在新版本发布时接收通知,请观看 版本发布通知。
通知事件
用户会收到以下事件的通知:
| 事件 | 发送给 | 设置级别 |
|---|---|---|
| 新版本发布 | 项目成员 | 自定义通知。 |
| 项目已移动 | 项目成员 | 任何非禁用级别。 |
| 邮箱地址更改 | 用户 | 安全邮件,始终发送。 |
| 群组访问级别更改 | 用户 | 当用户群组访问级别更改时发送。 |
| 添加新邮箱地址 | 用户 | 安全邮件,发送到主邮箱地址。 |
| 添加新邮箱地址 | 用户 | 安全邮件,发送到新添加的邮箱地址。 |
| 通过 SAML/SCIM 配置新用户 | 用户 | 当用户通过 SAML/SCIM 配置时发送。 |
| 添加新 SSH 密钥 | 用户 | 安全邮件,始终发送。 |
| 创建新用户 | 用户 | 用户创建时发送(OmniAuth/LDAP 除外)。 |
| 密码已更改 | 用户 | 安全邮件,当用户更改自己的密码时始终发送。 |
| 管理员更改密码 | 用户 | 安全邮件,当管理员更改其他用户的密码时始终发送。 |
| 个人访问令牌即将过期 | 用户 | 安全邮件,始终发送。 |
| 个人访问令牌已创建 | 用户 | 安全邮件,始终发送。 |
| 个人访问令牌已过期 | 用户 | 安全邮件,始终发送。 |
| 个人访问令牌已撤销 | 用户 | 安全邮件,始终发送。 在 GitLab 15.5 中引入。 |
| 项目部署令牌即将过期 | 项目所有者和维护者 | 安全邮件,始终发送。在 GitLab 18.3 中引入。 |
| 个人访问令牌已轮换 | 用户 | 安全邮件,始终发送。在 GitLab 18.3 中引入。 |
| 群组访问令牌即将过期 | 直接群组所有者 | 安全邮件,始终发送。在 GitLab 16.4 中引入。 |
| 项目访问令牌即将过期 | 直接项目所有者和维护者 | 安全邮件,始终发送。在 GitLab 16.4 中引入。 |
| 项目访问级别更改 | 用户 | 当用户项目访问级别更改时发送。 |
| SSH 密钥已过期 | 用户 | 安全邮件,始终发送。 |
| 双因素认证已禁用 | 用户 | 安全邮件,始终发送。 |
| 用户已添加到群组 | 用户 | 当用户被添加到群组时发送。 |
| 用户已添加到项目 | 用户 | 当用户被添加到项目时发送。 |
| 群组访问即将过期 | 群组成员 | 当用户对群组的访问权限将在七天后过期时发送。在 GitLab 16.3 中引入 |
| 项目访问即将过期 | 项目成员 | 当用户对项目的访问权限将在七天后过期时发送。在 GitLab 16.3 中引入 |
| 群组已安排删除 | 群组所有者 | 当群组被安排删除时发送。在 GitLab 17.11 中引入 |
| 项目已安排删除 | 项目所有者 | 当项目被安排删除时发送。在 GitLab 17.11 中引入 |
Issues、Merge Requests 和 Epics 的通知
您还会收到关于 issues、merge requests 和 epics 上发生事件的通知。
Issues、Merge Requests 和 Epics 的通知接收者
在 issues、merge requests 和 epics 中,对于大多数事件,通知会发送给:
- 参与者:
- 作者和指派人。
- 评论的作者。
- 在标题或描述中被用户名 提及 的任何人。
- 在评论中被用户名提及且通知级别为“参与”或更高的人。
- 关注者:通知级别为“关注”的用户(部分例外)。
- 订阅者:手动订阅通知的任何人。
- 自定义:通知级别为“自定义”且为匹配类型事件开启通知的用户。
为减少无需操作的通知数量,符合条件的审批者不会收到其项目中所有活动的通知。
要接收所有事件的通知,请将您的用户通知级别设置为 自定义 并选择所有选项。
不包含在“关注”级别中的事件
如果您将通知级别设置为 关注,您会收到几乎所有事件的通知,但有以下例外:
- 有人向 merge request 推送代码。
- Issue 明天到期。
- 流水线成功。
- 创建了您有资格审批的 merge request。
Issue 501083 跟踪将这些事件添加到 关注 级别。
编辑 Issues、Merge Requests 和 Epics 的通知设置
要切换 issue、merge request 或 epic 的通知:在右侧边栏,点击垂直省略号( ),然后开启或关闭 通知 开关。
移动的通知
- 提供方式:GitLab 自托管版
此功能的可用性由功能开关控制。有关详细信息,请参阅历史记录。启用此功能开关会将通知和待办事项按钮移动到页面的右上角。
当您 开启 通知时,即使您未参与讨论,也会收到每次更新的通知。 当您在 epic 中开启通知时,您不会自动订阅到链接到该 epic 的 issues。
当您 关闭 通知时,您将停止接收更新的通知。 关闭此开关只会取消订阅与此 issue、merge request 或 epic 相关的更新。 了解如何 退订所有 GitLab 邮件。
Issues、Merge Requests 和 Epics 的通知事件
下表列出了为 issues、merge requests 和 epics 生成通知的事件:
| 类型 | 事件 | 发送给 |
|---|---|---|
| Epic | 已关闭 | 订阅者和参与者。 |
| Epic | 新建 | 在描述中被用户名提及且通知级别为“提及”或更高的人。 |
| Epic | 新评论 | 参与者、关注者、订阅者和包含此事件的自定义通知级别用户。以及在评论中被用户名提及且通知级别为“提及”或更高的人。 |
| Epic | 重新打开 | 订阅者和参与者。 |
| Issue | 已关闭 | 订阅者和参与者。 |
| Issue | 明天到期。通知将在服务器时区(GitLab.com 为 UTC)的 00:50 发送给开放且截止日期为下一天的 issues。 | 参与者和包含此事件的自定义通知级别用户。 |
| Issue | 里程碑已更改 | 订阅者和参与者。 |
| Issue | 里程碑已移除 | 订阅者和参与者。 |
| Issue | 新建 | 在描述中被用户名提及且通知级别为“提及”或更高的人。 |
| Issue | 新评论 | 参与者、关注者、订阅者和包含此事件的自定义通知级别用户。以及在评论中被用户名提及且通知级别为“提及”或更高的人。 |
| Issue | 标题或描述已更改 | 任何新的用户名提及。 |
| Issue | 已重新指派 | 参与者、关注者、订阅者、包含此事件的自定义通知级别用户以及旧指派人。 |
| Issue | 重新打开 | 订阅者和参与者。 |
| Merge Request | 已关闭 | 订阅者和参与者。 |
| Merge Request | 存在冲突 | 作者和任何将 merge request 设置为自动合并的用户。 |
| Merge Request | 标记为就绪 | 关注者和参与者。 |
| Merge Request | 已合并 | 订阅者和参与者。 |
| Merge Request | 流水线成功时合并 | 作者、参与者、关注者、订阅者和包含此事件的自定义通知级别用户。对于作者、关注者和订阅者,忽略自定义通知级别。 |
| Merge Request | 里程碑已更改 | 订阅者和参与者。 |
| Merge Request | 里程碑已移除 | 订阅者和参与者。 |
| Merge Request | 新建 | 在描述中被用户名提及且通知级别为“提及”或更高的人。 |
| Merge Request | 新评论 | 参与者、关注者、订阅者和包含此事件的自定义通知级别用户。以及在评论中被用户名提及且通知级别为“提及”或更高的人。 |
| Merge Request | 已推送 | 参与者和包含此事件的自定义通知级别用户。 |
| Merge Request | 已重新指派 | 参与者、关注者、订阅者、包含此事件的自定义通知级别用户以及旧指派人。 |
| Merge Request | 请求审查 | 参与者、关注者、订阅者、包含此事件的自定义通知级别用户以及旧审查人。 |
| Merge Request | 重新打开 | 订阅者和参与者。 |
| Merge Request | 标题或描述已更改 | 任何新的用户名提及。 |
| Merge Request | 您有 资格审批 的 merge request 已创建 | 包含此事件的自定义通知级别用户。在 GitLab 16.7 中引入。在 GitLab 17.11 中从“添加为审批人”重命名。 |
| Pipeline | 失败 | 流水线作者。 |
| Pipeline | 已修复 | 流水线作者。默认启用。 |
| Pipeline | 成功 | 流水线作者,以及成功流水线的自定义通知级别。如果流水线之前失败,则在首次成功后发送“修复的流水线”消息,后续成功则发送“成功的流水线”消息。 |
| 服务账户触发的 Pipeline | 失败 | 服务账户触发的失败流水线的自定义通知级别。 |
| 服务账户触发的 Pipeline | 已修复 | 服务账户触发的修复流水线的自定义通知级别。 |
| 服务账户触发的 Pipeline | 成功 | 服务账户触发的成功流水线的自定义通知级别。 |
默认情况下,您不会收到自己创建的 issues、merge requests 等的通知。 要始终接收自己活动的通知,请开启 关于自己活动的通知。
未知登录的通知
此功能默认为 GitLab 自托管版实例启用。管理员可通过 UI 中的 登录限制 部分禁用此功能。 在 GitLab.com 上此功能始终启用。
当用户从之前未知的 IP 地址或设备成功登录时,GitLab 会通过邮件通知用户。 这样,GitLab 可以主动提醒用户潜在的恶意或未授权登录。此通知邮件包含:
- 主机名。
- 用户的姓名和用户名。
- IP 地址。
- 地理位置。
- 登录日期和时间。
GitLab 使用多种方法识别已知登录。所有方法都必须失败才会发送通知邮件。
- 上次登录 IP:检查当前登录 IP 地址与上次登录 IP 地址。
- 当前活动会话:如果用户有来自同一 IP 地址的现有活动会话。请参阅 活动会话。
- Cookie:成功登录后,会在浏览器中存储加密的 cookie。 此 cookie 设置为在最后一次成功登录后 14 天过期。
使用错误验证码尝试登录的通知
如果 GitLab 检测到有人使用错误的双因素认证(2FA)代码尝试登录您的账户,它会向您发送邮件通知。 这可以帮助您检测到恶意行为者获取了您的用户名和密码,并正在尝试暴力破解 2FA。
Designs 的通知
当有人在 design 上发表评论时,会向参与者发送邮件通知。
参与者包括:
- Design 的作者(如果不同作者上传了不同版本,可能有多个作者)。
- Design 评论的作者。
- 在 design 评论中被 提及 的任何人。
群组或项目访问即将过期的通知
如果用户对群组或项目的访问权限将在七天后过期,GitLab 会发送邮件通知。 这提醒群组或项目成员,如果他们希望延长访问时间,需要操作。
退订所有 GitLab 邮件
如果您不再希望接收任何邮件通知:
- 在左侧边栏,点击您的头像。
- 选择 偏好设置。
- 在左侧边栏,选择 通知。
- 将您的 全局通知级别 设置为 禁用。
- 取消勾选 接收关于自己活动的通知 复选框。
- 如果您属于任何群组或项目,将其通知级别设置为 全局 或 禁用。
在 GitLab 自托管版实例上,即使执行此操作,您的实例管理员 仍可向您发送邮件。
退订通知邮件
您可以按资源(例如特定的 issue)退订 GitLab 的通知邮件。
使用退订链接
GitLab 的每封通知邮件底部都包含退订链接。
要退订:
- 点击邮件中的退订链接。
- 如果您已在浏览器中登录 GitLab,将立即退订。
- 如果未登录,您需要确认操作。
使用邮件客户端或其他软件
当您查看来自 GitLab 的邮件时,您的邮件客户端可能会显示 退订 按钮。 要退订,请点击此按钮。
GitLab 的通知邮件包含特殊标头。 这些标头允许支持的邮件客户端和其他软件自动退订用户。示例如下:
List-Unsubscribe: <https://gitlab.com/-/sent_notifications/[REDACTED]/unsubscribe>,<mailto:incoming+[REDACTED][email protected]>
List-Unsubscribe-Post: List-Unsubscribe=One-ClickList-Unsubscribe 标头有两个条目:
- 软件发送
POST请求的链接。 此操作直接退订用户对该资源的订阅。 向此链接发送GET请求会显示确认对话框而非退订。 - 软件发送退订邮件的邮箱地址。 邮件内容将被忽略。
可用于过滤邮件的邮件标头
通知邮件包含 GitLab 特定的标头。为了更好地管理您的通知,您可以根据这些标头的内容过滤通知邮件。
例如,您可以过滤来自特定项目的所有邮件,在该项目中您被指派了 merge request 或 issue。
下表列出了所有 GitLab 特定的邮件标头:
| 标头 | 说明 |
|---|---|
List-Id |
项目在 RFC 2919 邮件列表标识符中的路径。您可以使用它通过过滤器组织邮件。 |
X-GitLab-(Resource)-ID |
通知对应的资源 ID。例如资源可以是 Issue、MergeRequest、Commit 或其他此类资源。 |
X-GitLab-(Resource)-State |
通知对应的资源状态。例如资源可以是 Issue 或 MergeRequest。值可以是 opened、closed、merged 或 locked。在 GitLab 16.4 中引入。 |
X-GitLab-ConfidentialIssue |
表示 issue 保密性的布尔值,用于通知。在 GitLab 16.0 中引入。 |
X-GitLab-Discussion-ID |
评论所属线程的 ID,用于评论的通知邮件中。 |
X-GitLab-Group-Id |
群组 ID。仅存在于 epics 的通知邮件中。 |
X-GitLab-Group-Path |
群组路径。仅存在于 epics 的通知邮件中。 |
X-GitLab-NotificationReason |
通知的原因。查看可能的值。 |
X-GitLab-Pipeline-Id |
流水线 ID,用于流水线的通知邮件中。 |
X-GitLab-Project-Id |
项目 ID。 |
X-GitLab-Project-Path |
项目路径。 |
X-GitLab-Project |
通知所属的项目名称。 |
X-GitLab-Reply-Key |
支持邮件回复的唯一令牌。 |
X-GitLab-NotificationReason
X-GitLab-NotificationReason 标头包含通知的原因。
值按优先级顺序如下:
own_activityassignedreview_requestedmentionedsubscribed
通知原因也包含在通知邮件的页脚中。
例如,原因 assigned 的邮件在页脚中有以下句子:
您收到此邮件是因为您在 <配置的 GitLab 主机名> 上被分配了一项任务。值班警报通知
- 版本:Premium, Ultimate
- 提供方式:GitLab.com, GitLab 自托管版, GitLab 专属版
alert_triggeredalert_acknowledgedalert_resolvedalert_ignored
事件升级通知
- 版本:Premium, Ultimate
- 提供方式:GitLab.com, GitLab 自托管版, GitLab 专属版
incident_triggeredincident_acknowledgedincident_resolvedincident_ignored
扩展 X-GitLab-NotificationReason 标头中包含的事件列表在
issue 20689 中跟踪。
故障排除
拉取通知接收者列表
如果您要拉取接收项目通知的接收者列表(主要用于自定义通知故障排除),
在 Rails 控制台中运行 sudo gitlab-rails c 并确保更新项目名称:
project = Project.find_by_full_path '<project_name>'
merge_request = project.merge_requests.find_by(iid: 1)
current_user = User.first
recipients = NotificationRecipients::BuildService.build_recipients(merge_request, current_user, action: "push_to"); recipients.count
recipients.each { |notify| puts notify.user.username }关于不存在的失败流水线的通知
如果您收到关于不存在的失败流水线的通知(通过邮件或 Slack),请仔细检查是否有重复的 GitLab 实例可能触发了该消息。
邮件通知已启用但未收到
如果您已在 GitLab 中启用邮件通知,但用户未按预期收到通知,请确保您的邮件提供商未阻止来自 GitLab 实例的邮件。许多邮件提供商(如 Outlook)会阻止来自不知名自托管邮件服务器 IP 地址的邮件。要验证,请尝试直接从您实例的 SMTP 服务器发送邮件。例如,来自 Sendmail 的测试邮件可能如下所示:
# (echo subject: test; echo) | $(which sendmail) -v -Am -i <有效邮箱地址>如果您的邮件提供商阻止了该消息,您可能会得到如下输出(取决于您的邮件提供商和 SMTP 服务器):
Diagnostic-Code: smtp; 550 5.7.1 不幸的是,来自 [xx.xx.xx.xx]
的消息未发送。有关信息,请访问
http://go.microsoft.com/fwlink/?LinkID=526655 (http://go.microsoft.com/fwlink/?LinkID=526655) AS(900)通常,通过将您 SMTP 服务器的 IP 地址添加到邮件提供商的允许列表中可以解决此问题。请查阅您的邮件提供商文档获取说明。