docs: improve send-email documentation

OAuth2.0 is a new authentication method that is being used by many email
providers, including Outlook and Gmail. Recently, the Authen::SASL perl
module has been updated to support OAuth2.0 authentication, thus making
the git-send-email script be able to use this authentication method as
well. So lets improve the documentation to reflect this change.

I also had a hard time finding a reliable OAuth2.0 access token
generator for Outlook and Gmail. So I added a link to the such
generators which I developed myself after seaching through lots of code
and API documentation to make things easier for others.

Signed-off-by: Aditya Garg <gargaditya08@live.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Aditya Garg 2025-05-08 17:14:28 +00:00 committed by Junio C Hamano
parent 8adee0c0b0
commit d6c63a798f
1 changed files with 59 additions and 8 deletions

View File

@ -496,12 +496,12 @@ include::includes/cmd-config-section-all.adoc[]

include::config/sendemail.adoc[]

EXAMPLES
--------
Use gmail as the smtp server
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:
To use `git send-email` to send your patches through the Gmail SMTP server,
edit `~/.gitconfig` to specify your account settings:

----
[sendemail]
@ -515,6 +515,41 @@ 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.

You can also use OAuth2.0 authentication with Gmail. `OAUTHBEARER` and
`XOAUTH2` are common methods 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
----

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 method.

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:

@ -523,9 +558,25 @@ following commands:
$ 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 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.
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 for Gmail and Outlook
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)

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: