[PATCH v2] send-email: add --smtp-outlook-id-tweak option
From: Aditya Garg <hidden>
Date: 2025-04-28 17:58:38
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
Possibly related (same subject, not in this thread)
- 2025-04-29 · Re: [PATCH v2] send-email: add --smtp-outlook-id-tweak option · Aditya Garg <hidden>
- 2025-04-28 · Re: [PATCH v2] send-email: add --smtp-outlook-id-tweak option · Junio C Hamano <hidden>
Add an option to allow users to specifically enable or disable retrieving the Message-ID from the Outlook SMTP server. This can be used for other hosts mimicking the behaviour of Outlook, or for users who set a custom domain to be a CNAME for the Outlook SMTP server. Helped-by: Junio C Hamano [off-list ref] Signed-off-by: Aditya Garg <redacted> --- v2: Replace tab with spaces in "outlookidtweak" => \$outlook_id_tweak, Documentation/git-send-email.adoc | 14 ++++++++++++++ git-send-email.perl | 14 +++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/Documentation/git-send-email.adoc b/Documentation/git-send-email.adoc
index 7f223db42d..20f804e4c7 100644
--- a/Documentation/git-send-email.adoc
+++ b/Documentation/git-send-email.adoc@@ -153,6 +153,20 @@ Note that no attempts whatsoever are made to validate the encoding. Default is the value of the `sendemail.transferEncoding` configuration value; if that is unspecified, default to `auto`. +--smtp-outlook-id-tweak=(always|never|auto):: + Outlook servers discard the Message-ID sent via email and assign a + new random Message-ID, thus breaking threads. ++ +-- +- 'auto' will attempt to retrieve the ID from the server only if the SMTP + server is 'smtp.office365.com' or 'smtp-mail.outlook.com'. +- 'always' will attempt to retrieve the ID from the server irrespective of + the SMTP server being used. Use only if Microsoft is your email provider. +- 'never' will disable this tweak irrespective of theSMTP server being used. +-- ++ +If not specified, the default behaviour will be that of 'auto'. + --xmailer:: --no-xmailer:: Add (or prevent adding) the "X-Mailer:" header. By default,
diff --git a/git-send-email.perl b/git-send-email.perl
index 618474916e..20cc460ed6 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl@@ -60,6 +60,8 @@ sub usage { --smtp-user <str> * Username for SMTP-AUTH. --smtp-pass <str> * Password for SMTP-AUTH; not necessary. --smtp-encryption <str> * tls or ssl; anything else disables. + --smtp-outlook-id-tweak <str> * This server munges Message-ID. Retrieve it from + the server. --smtp-ssl * Deprecated. Use '--smtp-encryption ssl'. --smtp-ssl-cert-path <str> * Path to ca-certificates (either directory or file). Pass an empty string to disable certificate
@@ -290,6 +292,7 @@ sub do_edit { my $mailmap = 0; my $target_xfer_encoding = 'auto'; my $forbid_sendmail_variables = 1; +my $outlook_id_tweak = 'auto'; my %config_bool_settings = ( "thread" => \$thread,
@@ -333,6 +336,7 @@ sub do_edit { "composeencoding" => \$compose_encoding, "transferencoding" => \$target_xfer_encoding, "sendmailcmd" => \$sendmail_cmd, + "outlookidtweak" => \$outlook_id_tweak, ); my %config_path_settings = (
@@ -518,6 +522,7 @@ sub config_regexp { "smtp-pass:s" => \$smtp_authpass, "smtp-ssl" => sub { $smtp_encryption = 'ssl' }, "smtp-encryption=s" => \$smtp_encryption, + "smtp-outlook-id-tweak=s" => \$outlook_id_tweak, "smtp-ssl-cert-path=s" => \$smtp_ssl_cert_path, "smtp-debug:i" => \$debug_net_smtp, "smtp-domain:s" => \$smtp_domain,
@@ -1576,7 +1581,14 @@ sub gen_header { sub is_outlook { my ($host) = @_; - return ($host eq 'smtp.office365.com' || $host eq 'smtp-mail.outlook.com'); + if ($outlook_id_tweak eq 'always') { + return 1; + } elsif ($outlook_id_tweak eq 'never') { + return 0; + } else { + return ($host eq 'smtp.office365.com' || + $host eq 'smtp-mail.outlook.com'); + } } # Prepares the email, then asks the user what to do.
--
2.49.0