625 lines
24 KiB
Plaintext
625 lines
24 KiB
Plaintext
git-send-email(1)
|
|
=================
|
|
|
|
NAME
|
|
----
|
|
git-send-email - Send a collection of patches as emails
|
|
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'git send-email' [<options>] (<file>|<directory>)...
|
|
'git send-email' [<options>] <format-patch-options>
|
|
'git send-email' --dump-aliases
|
|
'git send-email' --translate-aliases
|
|
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
Takes the patches given on the command line and emails them out.
|
|
Patches can be specified as files, directories (which will send all
|
|
files in the directory), or directly as a revision list. In the
|
|
last case, any format accepted by linkgit:git-format-patch[1] can
|
|
be passed to `git send-email`, as well as options understood by
|
|
linkgit:git-format-patch[1].
|
|
|
|
The header of the email is configurable via command-line options. If not
|
|
specified on the command line, the user will be prompted with a ReadLine
|
|
enabled interface to provide the necessary information.
|
|
|
|
There are two formats accepted for patch files:
|
|
|
|
1. mbox format files
|
|
+
|
|
This is what linkgit:git-format-patch[1] generates. Most headers and MIME
|
|
formatting are ignored.
|
|
|
|
2. The original format used by Greg Kroah-Hartman's `send_lots_of_email.pl`
|
|
script
|
|
+
|
|
This format expects the first line of the file to contain the `Cc:` value
|
|
and the `Subject:` of the message as the second line.
|
|
|
|
|
|
OPTIONS
|
|
-------
|
|
|
|
Composing
|
|
~~~~~~~~~
|
|
|
|
--annotate::
|
|
Review and edit each patch you're about to send. Default is the value
|
|
of `sendemail.annotate`. See the CONFIGURATION section for
|
|
`sendemail.multiEdit`.
|
|
|
|
--bcc=<address>,...::
|
|
Specify a `Bcc:` value for each email. Default is the value of
|
|
`sendemail.bcc`.
|
|
+
|
|
This option may be specified multiple times.
|
|
|
|
--cc=<address>,...::
|
|
Specify a starting `Cc:` value for each email.
|
|
Default is the value of `sendemail.cc`.
|
|
+
|
|
This option may be specified multiple times.
|
|
|
|
--compose::
|
|
Invoke a text editor (see GIT_EDITOR in linkgit:git-var[1])
|
|
to edit an introductory message for the patch series.
|
|
+
|
|
When `--compose` is used, `git send-email` will use the `From`, `To`, `Cc`,
|
|
`Bcc`, `Subject`, `Reply-To`, and `In-Reply-To` headers specified in the
|
|
message. If the body of the message (what you type after the headers and a
|
|
blank line) only contains blank (or `Git:` prefixed) lines, the summary won't be
|
|
sent, but the headers mentioned above will be used unless they are
|
|
removed.
|
|
+
|
|
Missing `From` or `In-Reply-To` headers will be prompted for.
|
|
+
|
|
See the CONFIGURATION section for `sendemail.multiEdit`.
|
|
|
|
--from=<address>::
|
|
Specify the sender of the emails. If not specified on the command line,
|
|
the value of the `sendemail.from` configuration option is used. If
|
|
neither the command-line option nor `sendemail.from` are set, then the
|
|
user will be prompted for the value. The default for the prompt will be
|
|
the value of `GIT_AUTHOR_IDENT`, or `GIT_COMMITTER_IDENT` if that is not
|
|
set, as returned by `git var -l`.
|
|
|
|
--reply-to=<address>::
|
|
Specify the address where replies from recipients should go to.
|
|
Use this if replies to messages should go to another address than what
|
|
is specified with the `--from` parameter.
|
|
|
|
--in-reply-to=<identifier>::
|
|
Make the first mail (or all the mails with `--no-thread`) appear as a
|
|
reply to the given Message-ID, which avoids breaking threads to
|
|
provide a new patch series.
|
|
The second and subsequent emails will be sent as replies according to
|
|
the `--[no-]chain-reply-to` setting.
|
|
+
|
|
So for example when `--thread` and `--no-chain-reply-to` are specified, the
|
|
second and subsequent patches will be replies to the first one like in the
|
|
illustration below where `[PATCH v2 0/3]` is in reply to `[PATCH 0/2]`:
|
|
+
|
|
[PATCH 0/2] Here is what I did...
|
|
[PATCH 1/2] Clean up and tests
|
|
[PATCH 2/2] Implementation
|
|
[PATCH v2 0/3] Here is a reroll
|
|
[PATCH v2 1/3] Clean up
|
|
[PATCH v2 2/3] New tests
|
|
[PATCH v2 3/3] Implementation
|
|
+
|
|
Only necessary if `--compose` is also set. If `--compose`
|
|
is not set, this will be prompted for.
|
|
|
|
--[no-]outlook-id-fix::
|
|
Microsoft Outlook SMTP servers discard the Message-ID sent via email and
|
|
assign a new random Message-ID, thus breaking threads.
|
|
+
|
|
With `--outlook-id-fix`, `git send-email` uses a mechanism specific to
|
|
Outlook servers to learn the Message-ID the server assigned to fix the
|
|
threading. Use it only when you know that the server reports the
|
|
rewritten Message-ID the same way as Outlook servers do.
|
|
+
|
|
Without this option specified, the fix is done by default when talking
|
|
to 'smtp.office365.com' or 'smtp-mail.outlook.com'. Use
|
|
`--no-outlook-id-fix` to disable even when talking to these two servers.
|
|
|
|
--subject=<string>::
|
|
Specify the initial subject of the email thread.
|
|
Only necessary if `--compose` is also set. If `--compose`
|
|
is not set, this will be prompted for.
|
|
|
|
--to=<address>,...::
|
|
Specify the primary recipient of the emails generated. Generally, this
|
|
will be the upstream maintainer of the project involved. Default is the
|
|
value of the `sendemail.to` configuration value; if that is unspecified,
|
|
and `--to-cmd` is not specified, this will be prompted for.
|
|
+
|
|
This option may be specified multiple times.
|
|
|
|
--8bit-encoding=<encoding>::
|
|
When encountering a non-ASCII message or subject that does not
|
|
declare its encoding, add headers/quoting to indicate it is
|
|
encoded in <encoding>. Default is the value of the
|
|
`sendemail.assume8bitEncoding`; if that is unspecified, this
|
|
will be prompted for if any non-ASCII files are encountered.
|
|
+
|
|
Note that no attempts whatsoever are made to validate the encoding.
|
|
|
|
--compose-encoding=<encoding>::
|
|
Specify encoding of compose message. Default is the value of the
|
|
`sendemail.composeEncoding`; if that is unspecified, UTF-8 is assumed.
|
|
|
|
--transfer-encoding=(7bit|8bit|quoted-printable|base64|auto)::
|
|
Specify the transfer encoding to be used to send the message over SMTP.
|
|
`7bit` will fail upon encountering a non-ASCII message. `quoted-printable`
|
|
can be useful when the repository contains files that contain carriage
|
|
returns, but makes the raw patch email file (as saved from an MUA) much
|
|
harder to inspect manually. `base64` is even more fool proof, but also
|
|
even more opaque. `auto` will use `8bit` when possible, and
|
|
`quoted-printable` otherwise.
|
|
+
|
|
Default is the value of the `sendemail.transferEncoding` configuration
|
|
value; if that is unspecified, default to `auto`.
|
|
|
|
--xmailer::
|
|
--no-xmailer::
|
|
Add (or prevent adding) the `X-Mailer:` header. By default,
|
|
the header is added, but it can be turned off by setting the
|
|
`sendemail.xmailer` configuration variable to `false`.
|
|
|
|
Sending
|
|
~~~~~~~
|
|
|
|
--envelope-sender=<address>::
|
|
Specify the envelope sender used to send the emails.
|
|
This is useful if your default address is not the address that is
|
|
subscribed to a list. In order to use the `From` address, set the
|
|
value to `auto`. If you use the `sendmail` binary, you must have
|
|
suitable privileges for the `-f` parameter. Default is the value of the
|
|
`sendemail.envelopeSender` configuration variable; if that is
|
|
unspecified, choosing the envelope sender is left to your MTA.
|
|
|
|
--sendmail-cmd=<command>::
|
|
Specify a command to run to send the email. The command should
|
|
be sendmail-like; specifically, it must support the `-i` option.
|
|
The command will be executed in the shell if necessary. Default
|
|
is the value of `sendemail.sendmailCmd`. If unspecified, and if
|
|
`--smtp-server` is also unspecified, `git send-email` will search
|
|
for `sendmail` in `/usr/sbin`, `/usr/lib` and `$PATH`.
|
|
|
|
--smtp-encryption=<encryption>::
|
|
Specify in what way encrypting begins for the SMTP connection.
|
|
Valid values are `ssl` and `tls`. Any other value reverts to plain
|
|
(unencrypted) SMTP, which defaults to port 25.
|
|
Despite the names, both values will use the same newer version of TLS,
|
|
but for historic reasons have these names. `ssl` refers to "implicit"
|
|
encryption (sometimes called SMTPS), that uses port 465 by default.
|
|
`tls` refers to "explicit" encryption (often known as STARTTLS),
|
|
that uses port 25 by default. Other ports might be used by the SMTP
|
|
server, which are not the default. Commonly found alternative port for
|
|
`tls` and unencrypted is 587. You need to check your provider's
|
|
documentation or your server configuration to make sure
|
|
for your own case. Default is the value of `sendemail.smtpEncryption`.
|
|
|
|
--smtp-domain=<FQDN>::
|
|
Specifies the Fully Qualified Domain Name (FQDN) used in the
|
|
HELO/EHLO command to the SMTP server. Some servers require the
|
|
FQDN to match your IP address. If not set, `git send-email` attempts
|
|
to determine your FQDN automatically. Default is the value of
|
|
`sendemail.smtpDomain`.
|
|
|
|
--smtp-auth=<mechanisms>::
|
|
Whitespace-separated list of allowed SMTP-AUTH mechanisms. This setting
|
|
forces using only the listed mechanisms. Example:
|
|
+
|
|
------
|
|
$ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ...
|
|
------
|
|
+
|
|
If at least one of the specified mechanisms matches the ones advertised by the
|
|
SMTP server and if it is supported by the utilized SASL library, the mechanism
|
|
is used for authentication. If neither `sendemail.smtpAuth` nor `--smtp-auth`
|
|
is specified, all mechanisms supported by the SASL library can be used. The
|
|
special value `none` maybe specified to completely disable authentication
|
|
independently of `--smtp-user`.
|
|
|
|
--smtp-pass[=<password>]::
|
|
Password for SMTP-AUTH. The argument is optional: If no
|
|
argument is specified, then the empty string is used as
|
|
the password. Default is the value of `sendemail.smtpPass`,
|
|
however `--smtp-pass` always overrides this value.
|
|
+
|
|
Furthermore, passwords need not be specified in configuration files
|
|
or on the command line. If a username has been specified (with
|
|
`--smtp-user` or a `sendemail.smtpUser`), but no password has been
|
|
specified (with `--smtp-pass` or `sendemail.smtpPass`), then
|
|
a password is obtained using linkgit:git-credential[1].
|
|
|
|
--no-smtp-auth::
|
|
Disable SMTP authentication. Short hand for `--smtp-auth=none`.
|
|
|
|
--smtp-server=<host>::
|
|
If set, specifies the outgoing SMTP server to use (e.g.
|
|
`smtp.example.com` or a raw IP address). If unspecified, and if
|
|
`--sendmail-cmd` is also unspecified, the default is to search
|
|
for `sendmail` in `/usr/sbin`, `/usr/lib` and `$PATH` if such a
|
|
program is available, falling back to `localhost` otherwise.
|
|
+
|
|
For backward compatibility, this option can also specify a full pathname
|
|
of a sendmail-like program instead; the program must support the `-i`
|
|
option. This method does not support passing arguments or using plain
|
|
command names. For those use cases, consider using `--sendmail-cmd`
|
|
instead.
|
|
|
|
--smtp-server-port=<port>::
|
|
Specifies a port different from the default port (SMTP
|
|
servers typically listen to smtp port 25, but may also listen to
|
|
submission port 587, or the common SSL smtp port 465);
|
|
symbolic port names (e.g. `submission` instead of 587)
|
|
are also accepted. The port can also be set with the
|
|
`sendemail.smtpServerPort` configuration variable.
|
|
|
|
--smtp-server-option=<option>::
|
|
If set, specifies the outgoing SMTP server option to use.
|
|
Default value can be specified by the `sendemail.smtpServerOption`
|
|
configuration option.
|
|
+
|
|
The `--smtp-server-option` option must be repeated for each option you want
|
|
to pass to the server. Likewise, different lines in the configuration files
|
|
must be used for each option.
|
|
|
|
--smtp-ssl::
|
|
Legacy alias for `--smtp-encryption ssl`.
|
|
|
|
--smtp-ssl-cert-path::
|
|
Path to a store of trusted CA certificates for SMTP SSL/TLS
|
|
certificate validation (either a directory that has been processed
|
|
by `c_rehash`, or a single file containing one or more PEM format
|
|
certificates concatenated together: see verify(1) -CAfile and
|
|
-CApath for more information on these). Set it to an empty string
|
|
to disable certificate verification. Defaults to the value of the
|
|
`sendemail.smtpSSLCertPath` configuration variable, if set, or the
|
|
backing SSL library's compiled-in default otherwise (which should
|
|
be the best choice on most platforms).
|
|
|
|
--smtp-user=<user>::
|
|
Username for SMTP-AUTH. Default is the value of `sendemail.smtpUser`;
|
|
if a username is not specified (with `--smtp-user` or `sendemail.smtpUser`),
|
|
then authentication is not attempted.
|
|
|
|
--smtp-debug=(0|1)::
|
|
Enable (1) or disable (0) debug output. If enabled, SMTP
|
|
commands and replies will be printed. Useful to debug TLS
|
|
connection and authentication problems.
|
|
|
|
--batch-size=<num>::
|
|
Some email servers (e.g. 'smtp.163.com') limit the number of emails to be
|
|
sent per session (connection) and this will lead to a failure when
|
|
sending many messages. With this option, send-email will disconnect after
|
|
sending _<num>_ messages and wait for a few seconds
|
|
(see `--relogin-delay`) and reconnect, to work around such a limit.
|
|
You may want to use some form of credential helper to avoid having to
|
|
retype your password every time this happens. Defaults to the
|
|
`sendemail.smtpBatchSize` configuration variable.
|
|
|
|
--relogin-delay=<int>::
|
|
Waiting _<int>_ seconds before reconnecting to SMTP server. Used together
|
|
with `--batch-size` option. Defaults to the `sendemail.smtpReloginDelay`
|
|
configuration variable.
|
|
|
|
Automating
|
|
~~~~~~~~~~
|
|
|
|
--no-to::
|
|
--no-cc::
|
|
--no-bcc::
|
|
Clears any list of `To:`, `Cc:`, `Bcc:` addresses previously
|
|
set via config.
|
|
|
|
--no-identity::
|
|
Clears the previously read value of `sendemail.identity` set
|
|
via config, if any.
|
|
|
|
--to-cmd=<command>::
|
|
Specify a command to execute once per patch file which
|
|
should generate patch file specific `To:` entries.
|
|
Output of this command must be single email address per line.
|
|
Default is the value of `sendemail.toCmd` configuration value.
|
|
|
|
--cc-cmd=<command>::
|
|
Specify a command to execute once per patch file which
|
|
should generate patch file specific `Cc:` entries.
|
|
Output of this command must be single email address per line.
|
|
Default is the value of `sendemail.ccCmd` configuration value.
|
|
|
|
--header-cmd=<command>::
|
|
Specify a command that is executed once per outgoing message
|
|
and output RFC 2822 style header lines to be inserted into
|
|
them. When the `sendemail.headerCmd` configuration variable is
|
|
set, its value is always used. When `--header-cmd` is provided
|
|
at the command line, its value takes precedence over the
|
|
`sendemail.headerCmd` configuration variable.
|
|
|
|
--no-header-cmd::
|
|
Disable any header command in use.
|
|
|
|
--[no-]chain-reply-to::
|
|
If this is set, each email will be sent as a reply to the previous
|
|
email sent. If disabled with `--no-chain-reply-to`, all emails after
|
|
the first will be sent as replies to the first email sent. When using
|
|
this, it is recommended that the first file given be an overview of the
|
|
entire patch series. Disabled by default, but the `sendemail.chainReplyTo`
|
|
configuration variable can be used to enable it.
|
|
|
|
--identity=<identity>::
|
|
A configuration identity. When given, causes values in the
|
|
`sendemail.<identity>` subsection to take precedence over
|
|
values in the `sendemail` section. The default identity is
|
|
the value of `sendemail.identity`.
|
|
|
|
--[no-]signed-off-by-cc::
|
|
If this is set, add emails found in the `Signed-off-by` trailer or `Cc:`
|
|
lines to the cc list. Default is the value of `sendemail.signedOffByCc`
|
|
configuration value; if that is unspecified, default to
|
|
`--signed-off-by-cc`.
|
|
|
|
--[no-]cc-cover::
|
|
If this is set, emails found in `Cc:` headers in the first patch of
|
|
the series (typically the cover letter) are added to the cc list
|
|
for each email set. Default is the value of `sendemail.ccCover`
|
|
configuration value; if that is unspecified, default to `--no-cc-cover`.
|
|
|
|
--[no-]to-cover::
|
|
If this is set, emails found in `To:` headers in the first patch of
|
|
the series (typically the cover letter) are added to the to list
|
|
for each email set. Default is the value of `sendemail.toCover`
|
|
configuration value; if that is unspecified, default to `--no-to-cover`.
|
|
|
|
--suppress-cc=<category>::
|
|
Specify an additional category of recipients to suppress the
|
|
auto-cc of:
|
|
+
|
|
--
|
|
- `author` will avoid including the patch author.
|
|
- `self` will avoid including the sender.
|
|
- `cc` will avoid including anyone mentioned in Cc lines in the patch header
|
|
except for self (use `self` for that).
|
|
- `bodycc` will avoid including anyone mentioned in Cc lines in the
|
|
patch body (commit message) except for self (use `self` for that).
|
|
- `sob` will avoid including anyone mentioned in the Signed-off-by trailers except
|
|
for self (use `self` for that).
|
|
- `misc-by` will avoid including anyone mentioned in Acked-by,
|
|
Reviewed-by, Tested-by and other "-by" lines in the patch body,
|
|
except Signed-off-by (use `sob` for that).
|
|
- `cccmd` will avoid running the --cc-cmd.
|
|
- `body` is equivalent to `sob` + `bodycc` + `misc-by`.
|
|
- `all` will suppress all auto cc values.
|
|
--
|
|
+
|
|
Default is the value of `sendemail.suppressCc` configuration value; if
|
|
that is unspecified, default to `self` if `--suppress-from` is
|
|
specified, as well as `body` if `--no-signed-off-cc` is specified.
|
|
|
|
--[no-]suppress-from::
|
|
If this is set, do not add the `From:` address to the `Cc:` list.
|
|
Default is the value of `sendemail.suppressFrom` configuration
|
|
value; if that is unspecified, default to `--no-suppress-from`.
|
|
|
|
--[no-]thread::
|
|
If this is set, the `In-Reply-To` and `References` headers will be
|
|
added to each email sent. Whether each mail refers to the
|
|
previous email (`deep` threading per `git format-patch`
|
|
wording) or to the first email (`shallow` threading) is
|
|
governed by `--[no-]chain-reply-to`.
|
|
+
|
|
If disabled with `--no-thread`, those headers will not be added
|
|
(unless specified with `--in-reply-to`). Default is the value of the
|
|
`sendemail.thread` configuration value; if that is unspecified,
|
|
default to `--thread`.
|
|
+
|
|
It is up to the user to ensure that no In-Reply-To header already
|
|
exists when `git send-email` is asked to add it (especially note that
|
|
`git format-patch` can be configured to do the threading itself).
|
|
Failure to do so may not produce the expected result in the
|
|
recipient's MUA.
|
|
|
|
--[no-]mailmap::
|
|
Use the mailmap file (see linkgit:gitmailmap[5]) to map all
|
|
addresses to their canonical real name and email address. Additional
|
|
mailmap data specific to `git send-email` may be provided using the
|
|
`sendemail.mailmap.file` or `sendemail.mailmap.blob` configuration
|
|
values. Defaults to `sendemail.mailmap`.
|
|
|
|
Administering
|
|
~~~~~~~~~~~~~
|
|
|
|
--confirm=<mode>::
|
|
Confirm just before sending:
|
|
+
|
|
--
|
|
- `always` will always confirm before sending.
|
|
- `never` will never confirm before sending.
|
|
- `cc` will confirm before sending when send-email has automatically
|
|
added addresses from the patch to the Cc list.
|
|
- `compose` will confirm before sending the first message when using --compose.
|
|
- `auto` is equivalent to `cc` + `compose`.
|
|
--
|
|
+
|
|
Default is the value of `sendemail.confirm` configuration value; if that
|
|
is unspecified, default to `auto` unless any of the suppress options
|
|
have been specified, in which case default to `compose`.
|
|
|
|
--dry-run::
|
|
Do everything except actually send the emails.
|
|
|
|
--[no-]format-patch::
|
|
When an argument may be understood either as a reference or as a file name,
|
|
choose to understand it as a format-patch argument (`--format-patch`)
|
|
or as a file name (`--no-format-patch`). By default, when such a conflict
|
|
occurs, `git send-email` will fail.
|
|
|
|
--quiet::
|
|
Make `git send-email` less verbose. One line per email should be
|
|
all that is output.
|
|
|
|
--[no-]validate::
|
|
Perform sanity checks on patches.
|
|
Currently, validation means the following:
|
|
+
|
|
--
|
|
* Invoke the sendemail-validate hook if present (see linkgit:githooks[5]).
|
|
* Warn of patches that contain lines longer than
|
|
998 characters unless a suitable transfer encoding
|
|
(`auto`, `base64`, or `quoted-printable`) is used;
|
|
this is due to SMTP limits as described by
|
|
https://www.ietf.org/rfc/rfc5322.txt.
|
|
--
|
|
+
|
|
Default is the value of `sendemail.validate`; if this is not set,
|
|
default to `--validate`.
|
|
|
|
--force::
|
|
Send emails even if safety checks would prevent it.
|
|
|
|
|
|
Information
|
|
~~~~~~~~~~~
|
|
|
|
--dump-aliases::
|
|
Instead of the normal operation, dump the shorthand alias names from
|
|
the configured alias file(s), one per line in alphabetical order. Note
|
|
that this only includes the alias name and not its expanded email addresses.
|
|
See `sendemail.aliasesFile` for more information about aliases.
|
|
|
|
--translate-aliases::
|
|
Instead of the normal operation, read from standard input and
|
|
interpret each line as an email alias. Translate it according to the
|
|
configured alias file(s). Output each translated name and email
|
|
address to standard output, one per line. See `sendemail.aliasFile`
|
|
for more information about aliases.
|
|
|
|
CONFIGURATION
|
|
-------------
|
|
|
|
include::includes/cmd-config-section-all.adoc[]
|
|
|
|
include::config/sendemail.adoc[]
|
|
|
|
EXAMPLES OF SMTP SERVERS
|
|
------------------------
|
|
Use Gmail as the SMTP Server
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
To use `git send-email` to send your patches through the Gmail SMTP server,
|
|
edit `~/.gitconfig` to specify your account settings:
|
|
|
|
----
|
|
[sendemail]
|
|
smtpEncryption = tls
|
|
smtpServer = smtp.gmail.com
|
|
smtpUser = yourname@gmail.com
|
|
smtpServerPort = 587
|
|
----
|
|
|
|
Gmail does not allow using your regular password for `git send-email`.
|
|
If you have multi-factor authentication set up on your Gmail account, you can
|
|
generate an app-specific password for use with `git send-email`. Visit
|
|
https://security.google.com/settings/security/apppasswords to create it.
|
|
|
|
Alternatively, instead of using an app-specific password, you can use
|
|
OAuth2.0 authentication with Gmail. OAuth2.0 is more secure than
|
|
app-specific passwords, and works regardless of whether you have multi-factor
|
|
authentication set up. `OAUTHBEARER` and `XOAUTH2` are common mechanisms used
|
|
for this type of authentication. Gmail supports both of them. As an example,
|
|
if you want to use `OAUTHBEARER`, edit your `~/.gitconfig` file and add
|
|
`smtpAuth = OAUTHBEARER` to your account settings:
|
|
|
|
----
|
|
[sendemail]
|
|
smtpEncryption = tls
|
|
smtpServer = smtp.gmail.com
|
|
smtpUser = yourname@gmail.com
|
|
smtpServerPort = 587
|
|
smtpAuth = OAUTHBEARER
|
|
----
|
|
|
|
Another alternative is using a tool developed by Google known as
|
|
https://github.com/google/gmail-oauth2-tools/tree/master/go/sendgmail[sendgmail]
|
|
to send emails using `git send-email`.
|
|
|
|
Use Microsoft Outlook as the SMTP Server
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Unlike Gmail, Microsoft Outlook no longer supports app-specific passwords.
|
|
Therefore, OAuth2.0 authentication must be used for Outlook. Also, it only
|
|
supports `XOAUTH2` authentication mechanism.
|
|
|
|
Edit `~/.gitconfig` to specify your account settings for Outlook and use its
|
|
SMTP server with `git send-email`:
|
|
|
|
----
|
|
[sendemail]
|
|
smtpEncryption = tls
|
|
smtpServer = smtp.office365.com
|
|
smtpUser = yourname@outlook.com
|
|
smtpServerPort = 587
|
|
smtpAuth = XOAUTH2
|
|
----
|
|
|
|
SENDING PATCHES
|
|
---------------
|
|
Once your commits are ready to be sent to the mailing list, run the
|
|
following commands:
|
|
|
|
$ git format-patch --cover-letter -M origin/master -o outgoing/
|
|
$ edit outgoing/0000-*
|
|
$ git send-email outgoing/*
|
|
|
|
The first time you run it, you will be prompted for your credentials. Enter the
|
|
app-specific or your regular password as appropriate.
|
|
|
|
If you have a credential helper configured (see linkgit:git-credential[1]), the
|
|
password will be saved in the credential store so you won't have to type it the
|
|
next time.
|
|
|
|
If you are using OAuth2.0 authentication, you need to use an access token in
|
|
place of a password when prompted. Various OAuth2.0 token generators are
|
|
available online. Community maintained credential helpers are also available:
|
|
|
|
- https://github.com/AdityaGarg8/git-credential-email[git-credential-gmail]
|
|
(cross platform, dedicated helper for authenticating Gmail accounts)
|
|
|
|
- https://github.com/AdityaGarg8/git-credential-email[git-credential-outlook]
|
|
(cross platform, dedicated helper for authenticating Microsoft Outlook accounts)
|
|
|
|
- https://github.com/AdityaGarg8/git-credential-email[git-credential-yahoo]
|
|
(cross platform, dedicated helper for authenticating Yahoo accounts)
|
|
|
|
You can also see linkgit:gitcredentials[7] for more OAuth based authentication
|
|
helpers.
|
|
|
|
Note: the following core Perl modules that may be installed with your
|
|
distribution of Perl are required:
|
|
|
|
https://metacpan.org/pod/MIME::Base64[MIME::Base64],
|
|
https://metacpan.org/pod/MIME::QuotedPrint[MIME::QuotedPrint],
|
|
https://metacpan.org/pod/Net::Domain[Net::Domain] and
|
|
https://metacpan.org/pod/Net::SMTP[Net::SMTP].
|
|
|
|
These additional Perl modules are also required:
|
|
|
|
https://metacpan.org/pod/Authen::SASL[Authen::SASL] and
|
|
https://metacpan.org/pod/Mail::Address[Mail::Address].
|
|
|
|
|
|
SEE ALSO
|
|
--------
|
|
linkgit:git-format-patch[1], linkgit:git-imap-send[1], mbox(5)
|
|
|
|
GIT
|
|
---
|
|
Part of the linkgit:git[1] suite
|