<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/git-send-email.perl, branch jch</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=jch</id>
<link rel='self' href='https://git.shady.money/git/atom?h=jch'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2026-03-12T17:56:05Z</updated>
<entry>
<title>Merge branch 'sp/send-email-validate-charset'</title>
<updated>2026-03-12T17:56:05Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-03-12T17:56:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=99da9348352a4e79246c17fd6cef425af801e309'/>
<id>urn:sha1:99da9348352a4e79246c17fd6cef425af801e309</id>
<content type='text'>
"git send-email" has learned to be a bit more careful when it
accepts charset to use from the end-user, to avoid 'y' (mistaken
'yes' when expecting a charset like 'UTF-8') and other nonsense.

* sp/send-email-validate-charset:
  send-email: validate charset name in 8bit encoding prompt
</content>
</entry>
<entry>
<title>Merge branch 'dt/send-email-client-cert'</title>
<updated>2026-03-12T17:56:05Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-03-12T17:56:04Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=898549142353fa105ad2c466a52e497620d12bb3'/>
<id>urn:sha1:898549142353fa105ad2c466a52e497620d12bb3</id>
<content type='text'>
"git send-email" learns to support use of client-side certificates.

* dt/send-email-client-cert:
  send-email: add client certificate options
</content>
</entry>
<entry>
<title>send-email: pass smtp hostname and port to Authen::SASL</title>
<updated>2026-03-05T19:28:45Z</updated>
<author>
<name>Aditya Garg</name>
<email>gargaditya08@live.com</email>
</author>
<published>2026-03-05T17:01:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b10fb23d52425644b8c3bb9b7277cb3328a73c16'/>
<id>urn:sha1:b10fb23d52425644b8c3bb9b7277cb3328a73c16</id>
<content type='text'>
Starting from version 2.2000, Authen::SASL supports passing the SMTP
server hostname and port to the OAUTHBEARER string passed via SMTP AUTH.
Add support for the same in git-send-email.

It's safe to add the new parameters unconditionally as older versions of
Authen::SASL will simply ignore them without any error. Something
similar is already being done for the authname parameter, which is not
supported by every authentication mechanism. This can be understood as
declaring a variable but not using at all.

Link: https://metacpan.org/pod/Authen::SASL::Perl::OAUTHBEARER

Signed-off-by: Aditya Garg &lt;gargaditya08@live.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>send-email: add client certificate options</title>
<updated>2026-03-02T16:39:26Z</updated>
<author>
<name>David Timber</name>
<email>dxdt@dev.snart.me</email>
</author>
<published>2026-03-02T03:16:41Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=a8215a2051411bbaa1ea1464026cb473fbf8f83c'/>
<id>urn:sha1:a8215a2051411bbaa1ea1464026cb473fbf8f83c</id>
<content type='text'>
For SMTP servers that do "mutual certificate verification", the mail
client is required to present its own TLS certificate as well. This
patch adds --smtp-ssl-client-cert and --smtp-ssl-client-key for such
servers.

The problem of which private key for the certificate is chosen arises
when there are private keys in both the certificate and private key
file. According to the documentation of IO::Socket::SSL(link supplied),
the behaviour(the private key chosen) depends on the format of the
certificate. In a nutshell,

	- PKCS12: the key in the cert always takes the precedence
	- PEM: if the key file is not given, it will "try" to read one
	  from the cert PEM file

Many users may find this discrepancy unintuitive.

In terms of client certificate, git-send-email is implemented in a way
that what's possible with perl's SSL library is exposed to the user as
much as possible. In this instance, the user may choose to use a PEM
file that contains both certificate and private key should be
at their discretion despite the implications.

Link: https://metacpan.org/pod/IO::Socket::SSL#SSL_cert_file-%7C-SSL_cert-%7C-SSL_key_file-%7C-SSL_key
Link: https://lore.kernel.org/all/319bf98c-52df-4bf9-b157-e4bc2bf087d6@dev.snart.me/

Signed-off-by: David Timber &lt;dxdt@dev.snart.me&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>send-email: validate charset name in 8bit encoding prompt</title>
<updated>2026-03-02T16:09:16Z</updated>
<author>
<name>Shreyansh Paliwal</name>
<email>shreyanshpaliwalcmsmn@gmail.com</email>
</author>
<published>2026-02-28T11:20:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c52f085a477c8eece87821c5bbc035e5a900eb12'/>
<id>urn:sha1:c52f085a477c8eece87821c5bbc035e5a900eb12</id>
<content type='text'>
When a non-ASCII character is detected in the body or subject of the email
the user is prompted with,

        Which 8bit encoding should I declare [UTF-8]? foo

After this the input string is validated by the regex, based on the fact
that the charset string will be minimum 4 characters [1]. If the string is
more than 4 letters the email is sent, if not then a second prompt to
confirm is asked to the user,

        Are you sure you want to use &lt;foo&gt; [y/N]? y

This relies on a length based regex heuristic check to validate the user
input, and can allow clearly invalid charset names to pass if the input is
greater than 4 characters.

Add a semantic validation of the charset name using the
Encode::find_encoding() which is a bundled module of perl. If the encoding
is not recognized, warn the user and ask for confirmation before proceeding.
After this validation the lenght based validation becomes redundant and also
breaks flow, so change the regex of valid input to any non blank string.

Make the encoding warning logic specific to the 8bit prompt, also add a
unique confirmation prompt which  reduces the load on ask(), and improves
maintainability.

Additionally, the wording of the first prompt can confuse the user if not
read properly or under any default assumptions for a yes/no prompt. Change
the wording to make it explicitly clear to the user that the prompt needs a
string input, UTF-8 being the default.

The intended flow is,

        Declare which 8bit encoding to use [default: UTF-8]? foobar
        'foobar' does not appear to be a valid charset name. Use it anyway [y/N]?

[1]- https://github.com/git/git/commit/852a15d748034eec87adbee73a72689c8936fb8b

Signed-off-by: Shreyansh Paliwal &lt;shreyanshpaliwalcmsmn@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'nb/send-email-no-dup-reply-to'</title>
<updated>2025-09-29T18:40:33Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-09-29T18:40:33Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d235f69ae880aba0a29841c61eec214f59b19650'/>
<id>urn:sha1:d235f69ae880aba0a29841c61eec214f59b19650</id>
<content type='text'>
"git send-email --compose --reply-to=&lt;address&gt;" used to add
duplicated Reply-To: header, which made mailservers unhappy.  This
has been corrected.

* nb/send-email-no-dup-reply-to:
  send-email: don't duplicate Reply-to: in intro message
</content>
</entry>
<entry>
<title>send-email: don't duplicate Reply-to: in intro message</title>
<updated>2025-09-17T14:05:46Z</updated>
<author>
<name>NeilBrown</name>
<email>neil@brown.name</email>
</author>
<published>2025-09-17T06:32:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f448f65719686c78065f2900fbb342da7b4bc1ec'/>
<id>urn:sha1:f448f65719686c78065f2900fbb342da7b4bc1ec</id>
<content type='text'>
If I run

  git send-email --compose --reply-to 'ME &lt;my@address.net&gt;' .....

and edit the intro message, then it will get two copies of the Reply-To
field.  gmail.com rejects such messages.

This happens because send-email reads the edited message examining the
headers.  For recognised headers the content is extracted to use in
constructing the final message and for possible inclusion in the patch
emails.  Unrecognised headers are gathered (in @xh) to be passed through
uninterpreted.

Unfortunately "Reply-To" is not recognised in this process so it is
added to @xh as an uninterpreted header, but also generated from the
$reply_to variable in gen_header(), resulting in two copies

Add parsing to the loop in pre_process_file() to recognise a Reply-to
header and to store the result in $reply_to.  This means that the
intro message will not get a second header and also means that
any changes made to the Reply-To header during editing will be
incorporated in the $reply_to variable and so included in all the
generated email messages.

Signed-off-by: NeilBrown &lt;neil@brown.name&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>send-email: enable copying emails to an IMAP folder without actually sending them</title>
<updated>2025-08-12T15:59:36Z</updated>
<author>
<name>Aditya Garg</name>
<email>gargaditya08@live.com</email>
</author>
<published>2025-08-12T06:44:36Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f33b2207da792b45354e9af8948745a169f75651'/>
<id>urn:sha1:f33b2207da792b45354e9af8948745a169f75651</id>
<content type='text'>
`git imap-send` was built on the idea of copying emails to an IMAP folder
like drafts, and sending them later using an email client. Currently
the only way to do it is by piping output of `git format-patch` to IMAP
send.

Add another way to do it by using `git send-email` with the
`--use-imap-only` or `sendmail.useImapOnly` option. This allows users to
use the advanced features of `git send-email` like tweaking Cc: list
programmatically, compose the cover letter, etc. and then send the well
formatted emails to an IMAP folder using `git imap-send`.

While at it, use `` instead of '' for --smtp-encryption ssl in help
section of `git send-email`.

Signed-off-by: Aditya Garg &lt;gargaditya08@live.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>send-email: add ability to send a copy of sent emails to an IMAP folder</title>
<updated>2025-08-12T15:59:35Z</updated>
<author>
<name>Aditya Garg</name>
<email>gargaditya08@live.com</email>
</author>
<published>2025-08-12T06:44:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=04133f5bc4f3dc7c847f4ba50e02486bcc117d94'/>
<id>urn:sha1:04133f5bc4f3dc7c847f4ba50e02486bcc117d94</id>
<content type='text'>
Some email providers like Apple iCloud Mail do not support sending a copy
of sent emails to the "Sent" folder if SMTP server is used. As a
workaround, various email clients like Thunderbird which rely on SMTP,
use IMAP to send a copy of sent emails to the "Sent" folder. Something
similar can be done if sending emails via `git send-email`, by using
the `git imap-send` command to send a copy of the sent email to an IMAP
folder specified by the user.

Add this functionality to `git send-email` by introducing a new
configuration variable `sendemail.imapfolder` and command line option
`--imap-folder` which specifies the IMAP folder to send a copy of the
sent emails to. If specified, a copy of the sent emails will be sent
by piping the emails to `git imap-send` command, after all emails are
sent via SMTP and the SMTP server has been closed.

Signed-off-by: Aditya Garg &lt;gargaditya08@live.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'mc/netrc-service-names'</title>
<updated>2025-07-14T18:19:25Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-07-14T18:19:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=db4a912c4ab822d494ba0a1695d6a0e731dde0ca'/>
<id>urn:sha1:db4a912c4ab822d494ba0a1695d6a0e731dde0ca</id>
<content type='text'>
"netrc" credential helper has been improved to understand textual
service names (like smtp) in addition to the numeric port numbers
(like 25).

* mc/netrc-service-names:
  contrib: better support symbolic port names in git-credential-netrc
  contrib: warn for invalid netrc file ports in git-credential-netrc
  contrib: use a more portable shebang for git-credential-netrc
</content>
</entry>
</feed>
