git send-email 发送邮件失败

Gan*_*hat 3 git smtp sendmail smtpclient git-send-email

我正在尝试发送 git 补丁以供上游社区审核;但接收方没有收到消息;

我尝试将“ --to”更改为我的私人电子邮件 ID 之一,但即使如此,我的私人邮箱也没有收到此信息;

命令:

git send-email --no-chain-reply-to --from "Ganapathi Bhat <xxx@gmail.com>" --to linux-wireless@vger.kernel.org my_patch.patch
Run Code Online (Sandbox Code Playgroud)

输出:

Unable to initialize SMTP properly. Check config and use --smtp-debug. VALUES: server=smtp.gmail.com encryption=tls hello=yyy.yyy.com port=587 at /usr/lib/git-core/git-send-email line 1506
Run Code Online (Sandbox Code Playgroud)

命令:

git config -l

输出:

user.email=xxx@gmail.com
user.name=Ganapathi Bhat
sendemail.smtpencryption=tls
sendemail.smtpserver=smtp.gmail.com
sendemail.smtpuser=xxx@gmail.com
sendemail.smtpserverport=587
Run Code Online (Sandbox Code Playgroud)

该补丁应交付给社区进行审核,并且应出现在以下列表中: https ://patchwork.kernel.org/project/linux-wireless/list/

Von*_*onC 5

考虑git send-email手册页,测试添加等号 (\' =\') 是否会改变任何内容:

\n
git send-email --no-chain-reply-to --from="Ganapathi Bhat" --to=linux-wireless@vger.kernel.org my_patch.patch\n                                        ^^^                   ^^^\n
Run Code Online (Sandbox Code Playgroud)\n

下一步是检查您的sendemail 配置git config -l
\n请参阅Git 提示
\n例如,使用 GMail:

\n

git send-email现在支持 TSL/SSL,因此使用 gmail 就像设置以下配置变量一样简单:

\n
[sendemail]\n    smtpencryption = tls\n    smtpserver = smtp.gmail.com\n    smtpuser = yourname@gmail.com\n    smtpserverport = 587\n
Run Code Online (Sandbox Code Playgroud)\n

OP Ganapathi Bhat在评论中确认了配置问题:

\n
\n

git send-email 发送邮件失败

\n

我使用了错误的“smtpserver”;
\n我联系了 IT 人员,找到了要使用的正确的“smtpserver”,这解决了问题。

\n
\n
\n

说到sendmail配置,请务必使用sendemail

\n

sendmail.*当定义“”配置变量时,Git 2.29(2020 年第 4 季度)将停止,这可能是定义“ sendemail.*”变量的错误尝试。

\n

请参阅Drew DeVault ( )提交的 dd84e52(2020 年 7 月 23 日)。\n (由Junio C Hamano 合并 -- --提交 a00bda2中,2020 年 8 月 17 日)ddevault
gitster

\n
\n

git-send-email: 如果sendmail.*设置了配置则死亡

\n

签署人:Drew DeVault

\n
\n
\n

我见过几个人在第一次尝试时就错误配置man ,因为他们设置了配置选项 - 而不是。\n这个补丁检测到这个错误并通过友好的警告来解决。git send-emailsendmail.*sendemail.*

\n
\n

git config现在包含在其手册页中:

\n
\n

sendemail.forbidSendmailVariables

\n

为了避免常见的错误配置错误,git send-email如果存在“ ”的任何配置选项,\n将中止并发出警告sendmail。设置此变量以绕过检查。

\n
\n
\n

在 Git 2.33(2021 年第 3 季度)中,“ git send-emailman得到了一些优化,其中一些与上面提到的提交相关。

\n

请参阅提交 17530b2提交 c95e3a3提交 5a544a4提交 f4dc943提交 447ed29提交 4adbf38提交 fef381e、提交 9264d29 、提交 2b110e9 提交119974e提交 671818a提交 879be43,由\xc3\x86var Arnfj提交 ecc4ee9(2021 年 5 月 28 日)\xc3\xb6r\xc3\xb0 比贾梅森 ( )。\n (由Junio C Hamano 合并 -- --提交 8de2e2e中,2021 年 7 月 22 日)avar
gitster

\n
\n

send-email:延迟加载配置以获得大幅加速

\n

签署人:\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason

\n
\n
\n

通过首先列出存在的配置键,然后才对它们调用例如“ ” man) ,可以减少完成最琐碎的任务(例如提供“-h”输出)所需的时间( man如果他们这样做了。git-send-emailgit config --bool

\n

经过多次运行,这将-h我的时间从约 250 毫秒缩短到约 150 毫秒,t9001-send-email.sh 的运行时间从约 25 秒缩短到约 20 秒。

\n

这引入了一个竞争条件,如果在我们发现列表和调用之间插入一个配置密钥read_config(),我们将做“错误”的事情,即
\n我们不会知道竞相添加的密钥。
\n理论上这是行为的改变,实际上并不重要。

\n

此处更改的函数config_regexp()已添加到dd84e52中(“ git-send-email:die if sendmail.* config is set”,2020-07-23,Git v2.29.0-rc0 -合并在批次 #8中列出)供 git-send 使用电子邮件。
\n因此,在 git config 找不到任何值的情况下,我们可以更改其奇数返回值。
\n*.pm如果在标量上下文中调用它,代码中的差异将很重要,但现在不再如此。

\n
\n
\n

注意:上述 Git 2.33 功能已损坏gitk,已在 Git 2.34(2021 年第四季度)中修复:

\n

请参阅\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason ( )提交的 b996f84(2021 年 9 月 6 日)。\n (由Junio C Hamano 合并 -- --提交 10de757中,2021 年 9 月 15 日)avar
gitster

\n
\n

send-email:修复 v2.33.0 中的“第一个配置键获胜”回归

\n

报告人:Eli Schwartz
\n测试人:Eli Schwartz
\n签署人:\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason

\n
\n
\n

修复我的c95e3a3中的回归(“ send-email:将琐碎的配置处理移至 Perl”,2021-05-28,Git v2.33.0-rc0 -批量 #6中列出的合并),其中我们选择第一个配置键多个定义的,而不是使用“ ” man ”的正常“最后一个键获胜”语义。git config --get

\n

这打破了例如 a与 ~/.gitconfig.git/config不同的情况sendemail.smtpServer
\n我们会选择~/.gitconfigover .git/config,而不是首选存储库本地版本。
\n同样适用于/etc/gitconfig等。

\n

即\n在 v2.33.0 中,在 say和 in-repo
中设置其中任何一个,都会优先选择其中一个而不是 --local。~/.gitconfig.git/config--global

\n
\n