Re: [PATCH v5 2/3] send-email: retrieve Message-ID from outlook SMTP server
- From
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
- Date
- Apr 24, 2025, 13:09 UTC
- Message-ID
- <2025042437-photo-header-2d0d@gregkh>
- In-Reply-To
- <PN0PR01MB9588861EB2B9589C8BA6A8EBB8852@PN0PR01MB9588.INDPRD01.PROD.OUTLOOK.COM>
On Thu, Apr 24, 2025 at 07:53:54AM +0000, Aditya Garg wrote:
Show 50 quoted lines
> The script generates a Message-ID alongwith the other headers when
> gen_header is called, and is sent alongwith the email. For most email
> providers, including gmail, the Message-ID goes unchanged to the
> recipient.
>
> But, this does not seem to be a case with Outlook. In Outlook, when we
> send our own Message-ID as a part of the headers, it discards it. Then
> it generates a new random Message-ID and that is what the recipient
> gets.
>
> This is a problem because the Message-ID is crucial when we are sending
> multiple emails in a thread. The current implementation for threads in
> the script replies to the Message-ID it generated, but due to Outlook's
> behavior, it is not the same as the one that the recipient got, thus
> breaking threads. So a need arises to retrieve the Message-ID from the
> server response and set it in the In-Reply-To and References email
> headers instead of using the self generated one for the purpose of
> replies.
>
> The $smtp->message variable in this script for outlook is something like
> this:
>
> 2.0.0 OK <Message-ID> [Hostname=Some-hostname]
>
> The Message-ID here is the one the recipient gets, rather than the one
> the script generated.
>
> This patch uses the fact above and retrieves the Message-ID from the
> server response. It then changes the value of the $message_id variable
> to the one received from the server. This value will be used when next
> and subsequent messages are sent as replies to the message, thus
> preserving the threading of the messages.
>
> Signed-off-by: Aditya Garg <gargaditya08@live.com>
> ---
> git-send-email.perl | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/git-send-email.perl b/git-send-email.perl
> index 9ba47a6f38..8c8544f120 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -1643,6 +1643,11 @@ sub gen_header {
> return ($recipients_ref, $to, $date, $gitversion, $cc, $ccline, $header);
> }
>
> +sub is_outlook {
> + my ($host) = @_;
> + return ($host eq 'smtp.office365.com' || $host eq 'smtp-mail.outlook.com');
> +}No real objection here, but what about all of the company-hosted outlook server systems out there? Do they need this same type of "flag"? And if so, why not make it a config variable?
thanks,
greg k-h