Help us learn about your current experience with the documentation. Take the survey.

---
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 继承 参与 通知级别。 它不会从您的全局通知设置继承 关注 通知级别。

群组通知

您可以为每个群组选择通知级别和邮箱地址。

更改群组通知级别

要为群组选择通知级别,请使用以下任一方法:

  1. 在左侧边栏,点击您的头像。
  2. 选择 偏好设置
  3. 在左侧边栏,选择 通知
  4. 群组 部分找到目标群组。
  5. 选择所需的 通知级别

或:

  1. 在左侧边栏,点击 搜索或跳转 并找到您的群组。
  2. 点击铃图标( notifications )旁边的通知下拉列表。
  3. 选择所需的 通知级别

更改群组通知邮箱地址

您可以选择一个邮箱地址来接收您所属的每个群组的通知。 例如,如果您是自由职业者,可以使用群组通知将客户项目的邮件与其他邮件分开。

  1. 在左侧边栏,点击您的头像。
  2. 选择 偏好设置
  3. 在左侧边栏,选择 通知
  4. 群组 部分找到目标群组。
  5. 选择所需的邮箱地址。

更改项目通知级别

为帮助您保持最新状态,您可以为每个项目选择通知级别。

要为项目选择通知级别,请使用以下任一方法:

  1. 在左侧边栏,点击您的头像。
  2. 选择 偏好设置
  3. 在左侧边栏,选择 通知
  4. 项目 部分找到目标项目。
  5. 选择所需的 通知级别

或:

  1. 在左侧边栏,点击 搜索或跳转 并找到您的项目。
  2. 点击铃图标( notifications )旁边的通知下拉列表。
  3. 选择所需的 通知级别

要了解如何在新版本发布时接收通知,请观看 版本发布通知

通知事件

用户会收到以下事件的通知:

事件 发送给 设置级别
新版本发布 项目成员 自定义通知。
项目已移动 项目成员 任何非禁用级别。
邮箱地址更改 用户 安全邮件,始终发送。
群组访问级别更改 用户 当用户群组访问级别更改时发送。
添加新邮箱地址 用户 安全邮件,发送到主邮箱地址。
添加新邮箱地址 用户 安全邮件,发送到新添加的邮箱地址。
通过 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 的通知:在右侧边栏,点击垂直省略号( ellipsis_v ),然后开启或关闭 通知 开关。

移动的通知

  • 提供方式: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 邮件

如果您不再希望接收任何邮件通知:

  1. 在左侧边栏,点击您的头像。
  2. 选择 偏好设置
  3. 在左侧边栏,选择 通知
  4. 将您的 全局通知级别 设置为 禁用
  5. 取消勾选 接收关于自己活动的通知 复选框。
  6. 如果您属于任何群组或项目,将其通知级别设置为 全局禁用

在 GitLab 自托管版实例上,即使执行此操作,您的实例管理员 仍可向您发送邮件

退订通知邮件

您可以按资源(例如特定的 issue)退订 GitLab 的通知邮件。

使用退订链接

GitLab 的每封通知邮件底部都包含退订链接。

要退订:

  1. 点击邮件中的退订链接。
  2. 如果您已在浏览器中登录 GitLab,将立即退订。
  3. 如果未登录,您需要确认操作。

使用邮件客户端或其他软件

当您查看来自 GitLab 的邮件时,您的邮件客户端可能会显示 退订 按钮。 要退订,请点击此按钮。

GitLab 的通知邮件包含特殊标头。 这些标头允许支持的邮件客户端和其他软件自动退订用户。示例如下:

List-Unsubscribe: <https://gitlab.com/-/sent_notifications/[REDACTED]/unsubscribe>,<mailto:incoming+[REDACTED][email protected]>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

List-Unsubscribe 标头有两个条目:

  • 软件发送 POST 请求的链接。 此操作直接退订用户对该资源的订阅。 向此链接发送 GET 请求会显示确认对话框而非退订。
  • 软件发送退订邮件的邮箱地址。 邮件内容将被忽略。

可用于过滤邮件的邮件标头

通知邮件包含 GitLab 特定的标头。为了更好地管理您的通知,您可以根据这些标头的内容过滤通知邮件。

例如,您可以过滤来自特定项目的所有邮件,在该项目中您被指派了 merge request 或 issue。

下表列出了所有 GitLab 特定的邮件标头:

标头 说明
List-Id 项目在 RFC 2919 邮件列表标识符中的路径。您可以使用它通过过滤器组织邮件。
X-GitLab-(Resource)-ID 通知对应的资源 ID。例如资源可以是 IssueMergeRequestCommit 或其他此类资源。
X-GitLab-(Resource)-State 通知对应的资源状态。例如资源可以是 IssueMergeRequest。值可以是 openedclosedmergedlocked在 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_activity
  • assigned
  • review_requested
  • mentioned
  • subscribed

通知原因也包含在通知邮件的页脚中。 例如,原因 assigned 的邮件在页脚中有以下句子:

您收到此邮件是因为您在 <配置的 GitLab 主机名> 上被分配了一项任务。

值班警报通知

  • 版本:Premium, Ultimate
  • 提供方式:GitLab.com, GitLab 自托管版, GitLab 专属版

值班警报 通知邮件可以具有 警报 的以下状态之一:

  • alert_triggered
  • alert_acknowledged
  • alert_resolved
  • alert_ignored

事件升级通知

  • 版本:Premium, Ultimate
  • 提供方式:GitLab.com, GitLab 自托管版, GitLab 专属版

事件升级 通知邮件可以具有 事件 的以下状态之一:

  • incident_triggered
  • incident_acknowledged
  • incident_resolved
  • incident_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 地址添加到邮件提供商的允许列表中可以解决此问题。请查阅您的邮件提供商文档获取说明。