Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
-
2.54.0
2026-04-20
-
2.53.0
2026-02-02
-
2.52.0
2025-11-17
- 2.51.2 no changes
-
2.51.1
2025-10-15
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.47.1 → 2.49.1 no changes
-
2.47.0
2024-10-06
- 2.45.1 → 2.46.4 no changes
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 no changes
-
2.44.0
2024-02-23
- 2.43.2 → 2.43.7 no changes
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.41.1 → 2.42.4 no changes
-
2.41.0
2023-06-01
- 2.39.1 → 2.40.4 no changes
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.33.1 → 2.34.8 no changes
-
2.33.0
2021-08-16
- 2.30.2 → 2.32.7 no changes
-
2.30.1
2021-02-08
-
2.30.0
2020-12-27
- 2.24.1 → 2.29.3 no changes
-
2.24.0
2019-11-04
- 2.23.1 → 2.23.4 no changes
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 no changes
-
2.22.1
2019-08-11
- 2.21.1 → 2.22.0 no changes
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 no changes
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 no changes
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
- 2.15.4 no changes
-
2.14.6
2019-12-06
- 2.13.7 no changes
-
2.12.5
2017-09-22
- 2.10.5 → 2.11.4 no changes
-
2.9.5
2017-07-30
- 2.8.6 no changes
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.2.3 no changes
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概述
git send-email [<选项>] (<文件>|<目录>)…
git send-email [<选项>] <格式补丁选项>
git send-email --dump-aliases
git send-email --translate-aliases
描述
获取命令行中给出的补丁并将其发送出去。 补丁可以指定为文件、目录(将发送目录中的所有文件),或直接指定为修订列表。 在最后一种情况下,git-format-patch[1] 接受的任何格式,以及 git-format-patch[1] 可以理解的选项,都可以传递给 git send-email。
电子邮件的标题可通过命令行选项进行配置。 如果未在命令行中指定,系统将在启用读取行的界面上提示用户提供必要的信息。
补丁文件有两种格式:
-
mbox 格式文件
这就是 git-format-patch[1] 生成的内容。 大部分头文件和 MIME 格式都会被忽略。
-
Greg Kroah-Hartman 的
send_lots_of_email.pl脚本使用的原始格式这种格式希望文件的第一行包含
Cc:(抄送)值,第二行包含邮件的 "主题:"。
选项
撰写
- --annotate
-
审核并编辑您即将发送的每个补丁。默认为
sendemail.annotate的值。有关sendemail.multiEdit请参阅配置部分。 - --bcc=<地址>,…
-
为每封电子邮件指定一个 "Bcc:"(密送)值。默认为
sendemail.bcc的值。该选项可指定多次。
- --cc=<地址>,…
-
为每封电子邮件指定一个起始 "Cc:"(抄送)值。 默认值为
sendemail.cc。该选项可指定多次。
- --compose
-
调用文本编辑器(参见 git-var[1] 中的 GIT_EDITOR)编辑补丁系列的介绍信息。
当使用
--compose时,git send-email 将使用邮件中指定的发件人、收件人、抄送人、密送人、主题、回复人和收件人标题。如果邮件正文(在标题和空行之后输入的内容)只包含空行(或 Git: 前缀),摘要将不会被发送,但上述标题将被使用,除非它们被移除。将提示是否有缺失的发件人或收件人标题。
请参阅
sendemail.multiEdit的配置部分。 - --from=<地址>
-
指定电子邮件的发件人。 如果未在命令行中指定,则使用配置选项
sendemail.from的值。 如果命令行选项和sendemail.from均未设置,则会提示用户输入值。 提示的默认值是 GIT_AUTHOR_IDENT 的值,如果没有设置 GIT_COMMITTER_IDENT,则使用gitvar-l返回的值。 - --reply-to=<地址>
-
指定收件人回复的地址。 如果邮件的回复地址与 --from 参数指定的地址不同,请使用此参数。
- --in-reply-to=<标识符>
-
使第一封邮件(或所有带有
--no-thread(无线程)的邮件)作为给定 Message-ID 的回复出现,从而避免为提供新的补丁系列而中断线程。 第二封及其后的邮件将根据 "--[no-]chain-reply-to "设置作为回复发送。例如,如果指定了
--thread和--no-chain-reply-to,则第二个和后续补丁将是对第一个补丁的回复,如下图所示,[PATCHv20/3] 是对 [PATCH0/2] 的回复:[PATCH 0/2] 我是这样做的... [PATCH 1/2] 清理和测试 [PATCH 2/2] 实施情况 [PATCH v2 0/3] 这里是重选 [PATCH v2 1/3] 清理 [PATCH v2 2/3] 新测试 [PATCH v2 3/3] 实施情况只有同时设置了 --compose 时才有必要。 如果未设置 --compose,则会提示。
- --outlook-id-fix
- --no-outlook-id-fix
-
Microsoft Outlook SMTP 服务器会丢弃通过电子邮件发送的 Message-ID,并分配一个新的随机 Message-ID,从而破坏线程。
使用
--outlook-id-fix时,gitsend-email会使用 Outlook 服务器特有的机制来获知服务器分配的 Message-ID,以修复线程关系。只有在你确定该服务器会像 Outlook 服务器那样报告重写后的 Message-ID 时,才应使用此选项。如果未指定此选项,则在与 smtp.office365.com 或 smtp-mail.outlook.com 通信时会默认启用该修复。即使与这两个服务器通信,也可以使用
--no-outlook-id-fix禁用它。 - --subject=<字符串>
-
指定电子邮件线程的初始主题。只有同时设置
--compose时才需要。如果未设置--compose,系统会提示输入。 - --to=<地址>,…
-
指定所生成电子邮件的主要收件人。一般来说,这将是相关项目的上游维护者。默认值是
sendemail.to配置值的值,如果未指定该值,且未指定 --to-cmd 参数,则会提示该值。该选项可指定多次。
- --8bit-encoding=<编码>
-
当遇到未声明其编码的非 ASCII 邮件或主题时,添加标头/引号以表明它是以 <编码> 编码的。 默认值是 'sendemail.assume8bitEncoding ' 的值;如果未指定该值,则在遇到任何非 ASCII 文件时会提示使用该值。
请注意,我们不会尝试验证编码。
- --compose-encoding=<编码>
-
指定撰写邮件的编码。默认值是 sendemail.composeencoding 的值;如果未指定,则假定为 UTF-8。
- --transfer-encoding=(7bit|8bit|quoted-printable|base64|auto)
-
指定通过 SMTP 发送邮件时使用的传输编码。 如仓本库中包含含有回车的文件,quoted-printable 会很有用,但会使原始补丁邮件文件(从 MUA 中保存)更难手动检查。
默认为
sendemail.transferEncoding配置值的值,如果未指定,则默认为auto。 - --xmailer
- --no-xmailer
-
添加(或阻止添加)"X-Mailer: " 标头。 默认情况下会添加,但可以通过将配置变量
sendemail.xmailer设为 `false`来关闭。
发送中
- --envelope-sender=<地址>
-
指定用于发送电子邮件的信封发件人。 如果您的默认地址不是订阅列表的地址,这将非常有用。为了使用
From(发件人)地址,请将值设置为auto。如果使用 sendmail 二进制文件,必须为 -f 参数设置适当的权限。 默认值是sendemail.envelopeSender配置变量的值;如果未指定,则由 MTA 选择信封发件人。 - --sendmail-cmd=<命令>
-
指定发送电子邮件时要运行的命令。该命令应类似于 sendmail;具体来说,它必须支持
-i选项。 如有必要,该命令将在 shell 中执行。 默认值为sendemail.sendmailcmd。 如果未指定,并且 --smtp-server 也未指定,git-send-email 将在/usr/sbin、/usr/lib和 $PATH 中搜索sendmail。 - --smtp-encryption=<加密>
-
指定 SMTP 连接的加密方式。 有效值为
ssl和tls。任何其他值都将恢复为普通(未加密)SMTP,默认端口为 25。 尽管名称不同,但这两个值都将使用相同的 TLS 更新版本,只是由于历史原因才使用了这些名称。ssl指 “隐式” 加密(有时称为 SMTPS),默认使用 465 端口。tls指 “显式” 加密(通常称为 STARTTLS),默认使用 25 端口。SMTP 服务器还可能使用其他端口,但这些端口并非默认端口。常见的tls和未加密的替代端口是 587。您需要查看供应商的文档或服务器配置,以确定自己的情况。默认值为sendemail.smtpEncryption。 - --smtp-domain=<FQDN>
-
指定发送到 SMTP 服务器的 HELO/EHLO 命令中使用的完全限定域名 (FQDN)。 有些服务器要求 FQDN 与您的 IP 地址匹配。 如果未设置,git send-email 会尝试自动确定您的 FQDN。 默认值为
sendemail.smtpDomain。 - --smtp-auth=<验证机制>
-
以空白分隔的允许 SMTP-AUTH 机制列表。此设置只强制使用列出的机制。例如:
$ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ...
如果指定的机制中至少有一种与 SMTP 服务器公布的机制相匹配,且受所使用的 SASL 库支持,则该机制将用于身份验证。如果既未指定
sendemail.smtpAuth,也未指定 --smtp-auth`参数,则可使用 SASL 库支持的所有机制。如果指定了特殊值 `none,则可以完全禁用与--smtp-user参数无关的身份验证 - --smtp-pass[=<密码>]
-
SMTP-AUTH 的密码。参数为可选参数:如果未指定参数,则使用空字符串作为密码。默认值是
sendemail.smtpPass的值,但--smtp-pass始终会覆盖该值。此外,无需在配置文件或命令行中指定密码。如果已指定用户名(使用
--smtp-user或sendemail.smtpUser),但未指定密码(使用--smtp-pass或sendemail.smtpPass),则使用 git-credential[1] 获取密码。 - --no-smtp-auth
-
禁用 SMTP 验证。
--smtp-auth=none的简称 - --smtp-server=<主机>
-
如果设置,则指定要使用的外发 SMTP 服务器(例如
smtp.example.com或原始 IP 地址)。 如果未指定,而且`--sendmail-cmd` 也未指定,默认情况下会在`/usr/sbin`、/usr/lib和 $PATH 中搜索sendmail(如果有),否则会返回到localhost。为了向后兼容,该选项也可以指定一个类似于 sendmail 的程序的完整路径名;该程序必须支持
-i选项。 这种方法不支持传递参数或使用纯命令名。 在这些情况下,请考虑使用--sendmail-cmd。 - --smtp-server-port=<端口>
-
指定一个不同于默认端口的端口(SMTP 服务器通常监听 smtp 端口 25,但也可能监听 submission 端口 587 或常用的 SSL smtp 端口 465);也接受符号端口名称(如用
submission代替 587)。端口也可以通过sendemail.smtpServerPort配置变量来设置。 - --smtp-server-option=<选项>
-
如果设置,则指定要使用的外发 SMTP 服务器选项。 默认值可由
sendemail.smtpServerOption配置选项指定。对于要传递给服务器的每个选项,都必须重复使用 --smtp-server-option 选项。同样,每个选项必须在配置文件中使用不同的行。
- --smtp-ssl
-
--smtp-encryptionssl的遗留别名。 - --smtp-ssl-cert-path
-
用于 SMTP SSL/TLS 证书验证的可信 CA 证书存储的路径(可以是已被
c_rehash处理过的目录,也可以是包含一个或多个 PEM 格式证书的单个文件:请参阅 verify(1) -CAfile 和 -CApath,了解更多相关信息)。将其设置为空字符串可禁用证书验证。如果设置了,默认值为sendemail.smtpsslcertpath配置变量的值,否则默认值为备用 SSL 库编译后的默认值(这应该是大多数平台上的最佳选择)。 - --smtp-user=<用户>
-
SMTP-AUTH 的用户名。默认值是
sendemail.smtpUser的值;如果未指定用户名(使用--smtp-user或sendemail.smtpUser),则不会尝试验证。 - --smtp-debug=(0|1)
-
启用 (1) 或禁用 (0) 调试输出。如果启用,将打印 SMTP 命令和回复。用于调试 TLS 连接和身份验证问题。
- --imap-sent-folder=<文件夹>
-
某些电子邮件服务提供商(如 iCloud)不会将通过 SMTP 发送的邮件副本投递到你邮箱中的
Sent文件夹或类似位置。使用此选项可让gitimap-send将邮件副本发送到由该选项指定的文件夹。你可以运行gitimap-send--list获取有效文件夹名称列表,其中也包括你邮箱里Sent文件夹的正确名称。你也可以用此选项将邮件发送到你指定的专用 IMAP 文件夹。此功能需要先配置
gitimap-send。相关说明请参见 git-imap-send[1]。 - --use-imap-only
- --no-use-imap-only
-
如果设置此项,所有电子邮件都只会被复制到通过
--imap-sent-folder或sendemail.imapSentFolder指定的 IMAP 文件夹,而不会发送给收件人。如果你只是想创建邮件草稿,然后改用其他邮件客户端发送,这会很有用。如果用--no-use-imap-only禁用,则邮件会像平常一样发送。默认禁用,但可通过sendemail.useImapOnly配置变量启用。此功能需要先配置
gitimap-send。相关说明请参见 git-imap-send[1]。 - --batch-size=<数值>
-
某些邮件服务器(如 smtp.163.com)会限制每个会话(连接)可发送的邮件数量,这会导致在发送大量邮件时失败。使用此选项后,send-email 在发送 <num> 封邮件后会断开连接,等待几秒钟(参见
--relogin-delay),然后重新连接,以绕过这种限制。你可能需要使用某种凭据辅助工具,以避免每次发生这种情况时都重新输入密码。默认值取自sendemail.smtpBatchSize配置变量。 - --relogin-delay=<整数>
-
在重新连接 SMTP 服务器前等待 <int> 秒。与
--batch-size选项配合使用。默认值取自sendemail.smtpReloginDelay配置变量。
自动化
- --no-to
- --no-cc
- --no-bcc
-
清除之前通过配置设置的
To:(收件人)、Cc:(抄送人)、Bcc:(密送人)地址列表。 - --no-identity
-
清除先前读取的通过配置设置的
sendemail.identity值(如果有)。 - --to-cmd=<命令>
-
指定每个补丁文件执行一次的命令,该命令应生成补丁文件特定的
To:(收件人)条目。 该命令的输出必须是每行一个电子邮件地址。 默认值为 sendemail.tocmd 配置值。 - --cc-cmd=<命令>
-
指定每个补丁文件执行一次的命令,该命令应生成补丁文件特定的
Cc:(抄送人)条目。 该命令的输出必须是每行一个电子邮件地址。 默认值为sendemail.ccCmd配置值。 - --header-cmd=<命令>
-
指定一条命令,每封发送邮件执行一次,并输出 RFC 2822 样式的标题行插入其中。如果设置了
sendemail.headerCmd配置变量,则始终使用其值。在命令行中提供 --header-cmd 参数时,其值优先于sendemail.headerCmd配置变量。 - --no-header-cmd
-
禁用任何正在使用的标题命令。
- --chain-reply-to
- --no-chain-reply-to
-
如果设置了此项,每封邮件都将作为对前一封邮件的回复发送。 如果使用
--no-chain-reply-to禁用该选项,则第一封邮件之后的所有邮件都将作为对第一封邮件的回复发送。 使用此功能时,建议给出的第一个文件是整个补丁系列的概述。默认情况下已禁用,但可以使用sendemail.chainReplyTo配置变量启用它。 - --identity=<身份>
-
配置标识。给定后,sendemail.<认证> 分节中的值将优先于
sendemail部分中的值。默认身份是sendemail.identity的值。 - --signed-off-by-cc
- --no-signed-off-by-cc
-
如果设置了此选项,请将“ Signed-off-by”预告或抄送:行中的电子邮件添加到抄送列表中。默认为`sendemail.signedoffbycc`配置值的值;如果未指定,则默认为—signed-off-by-cc。
- --cc-cover
- --no-cc-cover
-
如果设置了此项,在系列邮件的第一个补丁(通常是封面信)的抄送标题中找到的电子邮件将被添加到每个邮件集的抄送列表中。默认值为 sendemail.cccover 配置值;如果未指定,默认值为 --no-cc-cover。
- --to-cover
- --no-to-cover
-
如果设置了此项,在系列邮件的第一个补丁(通常是封面信函)的收件人标题中找到的邮件将被添加到每个邮件集的收件人列表中。默认值为 sendemail.tocover 配置值;如果未指定,默认值为—no-to-cover。
- --suppress-cc=<类别>
-
指定一个额外的收件人类别,以禁止自动收件:
-
author将避免包含补丁作者。 -
self将避免包括发件人。 -
cc将避免包括补丁头中抄送行提到的任何人,但自己除外(使用self即可)。 -
bodycc将避免在补丁正文(提交信息)中包含抄送行中提到的任何人,但自己除外(为此使用self)。 -
sob将避免包括签名行中提到的任何人, 除了自我 (为此使用 "自我" )。 -
misc-by将避免包含补丁正文中的 Acked-by、Reviewed-by、Tested-by 和其他 "-by " 行提到的任何人,但 Signed-off-by 除外(使用sob)。 -
cccmd将避免运行 --cc-cmd 命令。 -
body等同于sob+bodycc+misc-by。 -
all会抑制所有自动抄送值。
默认值是
sendemail.suppresscc配置值的值,如果未指定,则在指定 --suppress-from 参数时默认为self,在指定 --no-signed-off-cc 参数时默认为body。 -
- --suppress-from
- --no-suppress-from
-
如果设置了此项,则不会将发件人地址添加到抄送地址列表中。 默认值是
sendemail.suppressFrom配置值的值,如果未指定,则默认为 --no-suppress-from 参数。 - --thread
- --no-thread
-
如果设置了此项,每封邮件都会添加 In-Reply-To 和 References 标头。 每封邮件是引用前一封邮件(
gitformat-patch中的deep线程),还是引用第一封邮件(shallow线程),由--[no-]chain-reply-to决定。如果使用`--no-thread` 禁用,则不会添加这些标题(除非使用 --in-reply-to 指定)。 默认值是
sendemail.thread配置值;如果未指定,则默认为 --thread 选项。当
gitsend-email被要求添加 In-Reply-To 头信息时,用户应确保该头条信息不存在(特别要注意的是,gitformat-patch可被配置为自行进行线程处理)。 否则可能无法在收件人的 MUA 中产生预期结果。 - --mailmap
- --no-mailmap
-
使用 mailmap 文件(参见 gitmailmap[5])将所有地址映射为规范的真实姓名和电子邮件地址。还可以使用
sendemail.mailmap.file或sendemail.mailmap.blob配置值提供 git-send-email 的附加邮件映射数据。默认为sendemail.mailmap。
管理
- --confirm=<模式>
-
发送前确认:
-
always总会在发送前确认 -
never在发送前不会确认 -
如果发送邮件已自动将补丁中的地址添加到抄送列表中,
cc将在发送前进行确认 -
当使用 --compose 选项时,
compose会在发送第一条信息前进行确认。 -
auto等同于cc+compose
默认值是
sendemail.confirm配置值的值,如果未指定,则默认为auto,除非指定了任何抑制选项,在这种情况下默认为compose。 -
- --dry-run
-
除了实际发送邮件外,什么都做。
- --format-patch
- --no-format-patch
-
当参数可以理解为引用或文件名时,选择将其理解为格式补丁参数(
--format-patch)或文件名(--no-format-patch)。默认情况下,当出现这种冲突时,git send-email 操作将失败。 - --quiet
-
让 git-send-email 少输出一些。 每封邮件只输出一行即可。
- --validate
- --no-validate
-
对补丁进行正确性检查。 目前,验证的含义如下:
-
调用 sendemail-validate (发送邮件验证)钩子(如果存在)(参见 githooks[5])。
-
如果补丁包含长度超过 998 个字符的行,而又未使用合适的传输编码(
auto、base64或quoted-printable),则给出警告;这是由 https://www.ietf.org/rfc/rfc5322.txt 所述的 SMTP 限制决定的。
默认为
sendemail.validate的值;如果未设置,则默认为--validate参数。 -
- --force
-
即使安全检查不允许,也要发送电子邮件。
配置
本节中这一行以下的内容都是从 git-config[1] 文档中摘录的。其内容与那里的内容相同:
|
Warning
|
Missing See original version for this content. |
SMTP 服务器示例
使用 Gmail 作为 SMTP 服务器
若要使用 git send-email 通过 Gmail SMTP 服务器发送补丁,请编辑 ~/.gitconfig 来指定你的账户设置:
[sendemail] smtpEncryption = ssl smtpServer = smtp.gmail.com smtpUser = yourname@gmail.com smtpServerPort = 465
Gmail 不允许你在 git send-email 中使用常规密码。如果你的 Gmail 账户启用了多重身份验证,可以生成一个应用专用密码供 git send-email 使用。请访问 https://security.google.com/settings/security/apppasswords 创建。
另外,你也可以不用应用专用密码,而改为对 Gmail 使用 OAuth2.0 身份验证。OAuth2.0 比应用专用密码更安全,而且无论你是否启用了多重身份验证都可以使用。OAUTHBEARER 和 XOAUTH2 是这类身份验证常见的两种机制,Gmail 同时支持二者。举例来说,如果你想使用 OAUTHBEARER,请编辑你的 ~/.gitconfig 文件,并在账户设置中加入 smtpAuth = OAUTHBEARER:
[sendemail] smtpEncryption = ssl smtpServer = smtp.gmail.com smtpUser = yourname@gmail.com smtpServerPort = 465 smtpAuth = OAUTHBEARER
另一个选择是使用 Google 开发的工具 sendgmail,配合 git send-email 发送邮件。
使用 Microsoft Outlook 作为 SMTP 服务器
与 Gmail 不同,Microsoft Outlook 已不再支持应用专用密码。因此,Outlook 必须使用 OAuth2.0 身份验证。此外,它只支持 XOAUTH2 身份验证机制。
编辑 ~/.gitconfig 来指定你的 Outlook 账户设置,并让 git send-email 使用其 SMTP 服务器:
[sendemail] smtpEncryption = tls smtpServer = smtp.office365.com smtpUser = yourname@outlook.com smtpServerPort = 587 smtpAuth = XOAUTH2
发送补丁
一旦您的提交已准备好发送至邮件列表,请运行以下命令:
$ git format-patch --cover-letter -M origin/master -o outgoing/ $ edit outgoing/0000-* $ git send-email outgoing/*
首次运行时,系统会提示你输入凭据。请根据实际情况输入应用专用密码或常规密码。
如果你配置了凭据辅助工具(见 git-credential[1]),密码会保存在凭据存储中,因此下次无需再次输入。
如果你使用 OAuth2.0 身份验证,那么在提示输入密码时需要改用访问令牌。网上可以找到各种 OAuth2.0 令牌生成工具,也有社区维护的凭据辅助工具可用:
-
git-credential-gmail(跨平台,专用于 Gmail 账户身份验证的辅助工具)
-
git-credential-outlook(跨平台,专用于 Microsoft Outlook 账户身份验证的辅助工具)
-
git-credential-yahoo(跨平台,专用于 Yahoo 账户身份验证的辅助工具)
-
git-credential-aol(跨平台,专用于 AOL 账户身份验证的辅助工具)
你还可以参见 gitcredentials[7],了解更多基于 OAuth 的身份验证辅助工具。
Proton Mail 不提供用于发送电子邮件的 SMTP 服务器。如果你是 Proton Mail 的付费用户,可以使用 Proton Mail 官方提供的 Proton Mail Bridge 创建一个本地 SMTP 服务器来发送邮件。对于免费和付费用户,都可以使用像 git-protonmail 这样的社区维护项目。
注意:需要以下几个核心 Perl 模块,它们可能已经随你的 Perl 发行版安装:
MIME::Base64、https://metacpan.org/pod/MIME::QuotedPrint[MIME::QuotedPrint]、https://metacpan.org/pod/Net::Domain[Net::Domain] 以及 Net::SMTP。
此外还需要以下 Perl 模块:
利用 git send-email 的 sendmailCmd 选项
除了通过 SMTP 服务器发送电子邮件外,git send-email 还可以通过任何支持类 sendmail 命令的应用程序发送邮件。更多信息可参阅上文中 --sendmail-cmd=<command> 的说明。如果你想让另一款应用程序充当 git send-email 的 SMTP 客户端,或者你的邮件服务提供商使用专有 API 而不是 SMTP 来发信,这一能力会非常有用。
下面以 msmtp 为例,看看如何进行配置。它是许多 Linux 发行版中常见的一款流行 SMTP 客户端。编辑 ~/.gitconfig,指示 git-send-email 使用它来发送邮件。
[sendemail] sendmailCmd = /usr/bin/msmtp # 将这里改成 msmtp 的安装路径
这类社区维护辅助工具的部分链接如下:
-
msmtp(功能丰富的流行 SMTP 客户端,可用于 Linux 和 macOS)
-
git-protonmail(跨平台客户端,可通过 ProtonMail API 发送邮件)
-
git-msgraph(跨平台客户端,可通过 Microsoft Graph API 发送邮件)
参见
git-format-patch[1], git-imap-send[1], mbox(5)
GIT
属于 git[1] 文档