使用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
命令能够清楚地告诉我配置是否合理?
答案 0 :(得分:1)
Git 2.33(2021 年第 3 季度),提出了另一种使用/调试 sendmail 的方法:“git send-email
”(man) 学习了 --sendmail-cmd
命令行选项和 sendemail.sendmailCmd
配置变量,这是一种比当前重新利用“smtp-server
”的方法更明智的方法,后者旨在命名服务器,而不是命名与服务器通信的命令。>
因此您可以指定自己的类似 sendmail 的程序,该程序可用于调试/放置更多跟踪。
请参阅 commit cd5b33f 的 Gregory Anders (gpanders
)(2021 年 5 月 14 日)。
(由 Junio C Hamano -- gitster
-- 于 commit 1359972 合并,2021 年 6 月 14 日)
git-send-email
:添加选项以指定发送邮件命令签字人:Gregory Anders
<块引用>sendemail.smtpServer 配置选项和 --smtp-server
命令行选项都支持使用类似 sendmail 的程序通过指定绝对文件路径来发送电子邮件。
但是,由于以下原因,这并不理想:
要求绝对路径不利于可移植性,因为同一个程序可能位于不同系统上的不同位置。
如果用户希望将参数传递给他们的程序,他们必须使用 smtpServerOption
选项,该选项很麻烦(因为必须为每个选项重复该选项)并且不遵守正常的 Git 约定。
引入新的配置选项 sendemail.sendmailCmd
以及命令行选项 --sendmail-cmd
,可用于指定要运行的命令(带或不带参数)或 shell 表达式以发送电子邮件。
该选项的名称与--to-cmd
和--cc-cmd一致。
此调用尊重用户的 $PATH
,因此不需要绝对路径。
还支持任意的 shell 表达式,允许用户进行基本的脚本编写。
为该选项提供比 --smtp-server
和 sendemail.smtpServer
更高的优先级,因为新界面更加灵活。
为了向后兼容,请继续支持 --smtp-server
和 sendemail.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通信输出。