不要使用 outlook 邮箱来 git send-email。微软对此事的态度也是傲慢无比。

吐槽一下,今天想使用 git send-email --thread 来发送一系列 patch,结果发送出去之后一看,thread 的结构被完全破坏了。

仔细一看发出去的邮件的 raw message,发现 outlook 完全不 respect git 生成的 <Message-ID>, 相反它是直接自己生成了一个新的 <Message-ID>, 并且将 原来 git 生成的那个 <Message-ID> 变成了 <X-Microsoft-Original-Message-ID>。这样一来第一个 commit 对应的邮件的 <Message-ID> 被修改以后,后续的 commit 对应的邮件的 In-Reply-ToReferences 所对应的那个 <Message-ID> 压根就不存在,那么 thread 的结构自然也被破坏了。

微软官方对此事的回复也是傲慢无比:

https://answers.microsoft.com/en-us/outlook_com/forum/all/custom-message-id-modified-by-the-outlook-smtp/ee375ce9-85b7-4605-ba0c-62c85b6b9d13

微软的回复简单来说就直接是:这并不是我们的问题,我们只是认为是 gmail 把 outlook 给 block 掉了。所以这是 gmail 的问题不是我们的问题。(事实上根本就不是,我用 outlook 邮箱自己发给自己 patch 一样会有这个 message-id 被修改的问题)

除此之外也有多个类似的问题反馈贴,全部被微软直接关闭讨论。

最后直接换用 gmail 解决了这个问题,git 生成的 message-id 被尊重了。

之前也有人在推特还是HN来着分享过一个经验:很多公司更倾向于大公司的邮箱而不尊重自建邮箱服务器,时常把邮箱地址拉进 spam,申诉无门。

加上你这个案例,真的让人唏嘘。

第一次听说这个命令,主要用的场景是什么?

给 linux 发 patch

使用邮件列表作为开发方式的project都得使用patch。emacs的邮件列表的规范是比较宽松的,可以把patch直接作为附件贴到邮件里。很多邮件列表比如linux kernel,qemu等,发送的patch必须是git send-email直接发送的,patch本身就是邮件的正文。

没有人规定一定要用git-send-email啊. 只是git-send-email比较方便罢了. 你只要用plain-text发送就行. 所以wanderlust, mu4e, thunderbird等都可以支持的.

就算不使用git send-email,发送出去的也得是复制粘贴 git format-patch 生成的内容吧。而且不管使用啥客户端,只要是outlook发出去的,都会有这个问题。因为 git format-patch --thread 生成的 patch 文件里的那个 message-id 会被 outlook 修改掉。

除非你是打算先把 patch 1 发送出去以后,把后续的 patch 2-n 都手动的一一回复那个已经发送出去的 patch 1,这样才不会破坏掉 thread 结构

你好 我注册了一个outlook邮箱 但看到了您的帖子 但是无法复现你说的问题 请问替换的id是图中哪个部分呢?

git send-email 不是这么发的,并不是直接把 git format-patch 生成的内容粘贴到邮件的正文。事实上 git format-patch 生成的内容里 subject 就是你邮件的 subject。

你可以配置一下直接用 git send-email --to [email protected] --thread --suppress-cc=all master -3 然后对比一下用 gmail 发送的就知道了。gmail 发送的话 三个 patch 会在同一个 thread 里面,然后 outlook 发的话后两个在一个 thread 里,但是第一个会在 另一个单独的 thread。

你可以配置一下使用 mutt/gnus/mu4e 之类的邮件客户端,这些客户端能够让你直接查看邮件的 raw message,这样你就可以看到未经过渲染的邮件的原始内容,你就知道 outlook 有没有私自动你的邮件的 <Message-id> 了。

明白了 我正准备使用配置gnu 多谢指点

我刚才试了一下,你在gmail的网页客户端里邮件旁边有一个三个点点点的图标,你点一下有一个东西叫 show original,你点那个以后也可以查看邮件的原始内容。outlook应该也有一个类似的图标。

嗯 我看了下确实如此

ms 嘛,验证码要7位,发给你的是6位。验证码要4位,发给你的是5位。印度人多了就这个样子

4 个赞

v2ex的站长也是这个德性,无缘无故禁言,发邮件重置密码也不理。

我印象中坚持使用纯文本邮件的社区本来就很讨厌outlook,好多年前新闻组时代就在骂了 :rofl:。大概记得有几点:1.outlook的标准是reply above而不是reply below,引用的时候往往也不遵循纯文本的规范。2. outlook生成和处理用来分割签名的dash dash space的好像不太兼容。3. 本身outlook默认对纯文本支持也不好,会自动插入一些有的没的html。其他好像还有email标准之类的争议记不清了。

然而骂也没用,outlook在商业市场统治力蒸蒸日上 :rofl: