我们如何才能理智地验证git send-email配置设置?

时间:2016-03-10 17:03:46

标签: git

使用git 2.5。

是否有一种聪明或官方的方式来验证 git send-email 是否能够连接到我的smtp服务器并对其进行身份验证?我已经配置了git,但我似乎无法成功使用 git send-email

当我执行git send-email --to=mytest@example.com时,我会看到:

[Net :: SMTP]连接在/ usr / libexec / git-core / git-send-email第1348行关闭。

或者,在我的配置中使用tls时,我看到:

死于/ usr / libexec / git-core / git-send-email第1348行。

我的〜/ .gitconfig 似乎正确无误:

[user]
  name = John Jacob Jingleheimer Schmidt
  email = jjjs@example.com
[sendemail]
  smtpserver = mail.example.com
  smtpuser = *****
  smtpserverport = **
  confirm = auto
  smtpauth = PLAIN
  smtpencryption = tls

这是一个很难解决的麻烦。是否有某种git send-email --verify命令能够清楚地告诉我配置是否合理?

2 个答案:

答案 0 :(得分:1)

Git 2.33(2021 年第 3 季度),提出了另一种使用/调试 sendmail 的方法:“git send-email(man) 学习了 --sendmail-cmd 命令行选项和 sendemail.sendmailCmd 配置变量,这是一种比当前重新利用“smtp-server”的方法更明智的方法,后者旨在命名服务器,而不是命名与服务器通信的命令。

因此您可以指定自己的类似 sendmail 的程序,该程序可用于调试/放置更多跟踪。

请参阅 commit cd5b33fGregory Anders (gpanders)(2021 年 5 月 14 日)。
(由 Junio C Hamano -- gitster --commit 1359972 合并,2021 年 6 月 14 日)

<块引用>

git-send-email:添加选项以指定发送邮件命令

签字人:Gregory Anders

<块引用>

sendemail.smtpServer 配置选项和 --smtp-server 命令行选项都支持使用类似 sendmail 的程序通过指定绝对文件路径来发送电子邮件。
但是,由于以下原因,这并不理想:

  1. 重载了smtpServer的意思(现在一个程序正在使用 服务器?)
  2. 它不允许使用非绝对路径、参数或任意 脚本

要求绝对路径不利于可移植性,因为同一个程序可能位于不同系统上的不同位置。
如果用户希望将参数传递给他们的程序,他们必须使用 smtpServerOption 选项,该选项很麻烦(因为必须为每个选项重复该选项)并且不遵守正常的 Git 约定。

引入新的配置选项 sendemail.sendmailCmd 以及命令行选项 --sendmail-cmd,可用于指定要运行的命令(带或不带参数)或 shell 表达式以发送电子邮件。
该选项的名称与--to-cmd和--cc-cmd一致。
此调用尊重用户的 $PATH,因此不需要绝对路径。
还支持任意的 shell 表达式,允许用户进行基本的脚本编写。

为该选项提供比 --smtp-serversendemail.smtpServer 更高的优先级,因为新界面更加灵活。
为了向后兼容,请继续支持 --smtp-serversendemail.smtpServer 中的绝对路径。

git send-email 现在包含在其 man page 中:

<块引用>

--sendmail-cmd=<command>

指定要运行的命令以发送电子邮件。
该命令应该类似于 sendmail;具体来说,它必须支持 -i 选项。
如有必要,该命令将在 shell 中执行。
默认 是 sendemail.sendmailcmd 的值。
如果未指定,如果 --smtp-server 也未指定,git-send-email 将搜索 对于 sendmail/usr/sbin/usr/lib 中的 $PATH

git send-email 现在包含在其 man page 中:

<块引用>

为了向后兼容,这个选项还可以指定一个完整的路径名 使用类似 sendmail 的程序;该程序必须支持 -i 选项。
此方法不支持传递参数或使用普通 命令名称。
对于这些用例,请考虑使用 --sendmail-cmd 相反。

答案 1 :(得分:0)

使用--smtp-debug=1选项。这允许查看smtp通信输出。