From: Douglas Stockwell <douglas.stockwell@gmail.com>
To: git@vger.kernel.org
Cc: Douglas Stockwell <doug@11011.net>
Subject: [PATCH] send-email: Add support for SSL and SMTP-AUTH
Date: Sun, 2 Sep 2007 12:14:45 +0900 [thread overview]
Message-ID: <11887028854022-git-send-email-doug@11011.net> (raw)
Allows username and password to be given using --smtp-authuser
and --smtp-authpass. SSL use is flagged by --smtp-ssl. These are
backed by corresponding defaults in the git configuration file.
Signed-off-by: Douglas Stockwell <doug@11011.net>
---
Documentation/git-send-email.txt | 21 +++++++++++++++-
git-send-email.perl | 50 ++++++++++++++++++++++++++++++-------
2 files changed, 60 insertions(+), 11 deletions(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 8231286..471c268 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -79,6 +79,16 @@ The --cc option must be repeated for each user you want on the cc list.
`/usr/lib/sendmail` if such program is available, or
`localhost` otherwise.
+--smtp-authuser, --smtp-authpass::
+ Username and password for SMTP-AUTH. Defaults are the values of
+ the configuration values 'sendemail.smtpauthuser' and
+ 'sendemail.smtpauthpass'. If not set, authentication is not attempted.
+
+--smtp-ssl::
+ If set, connects to the SMTP server using SSL.
+ Default is the value of the 'sendemail.smtpssl' configuration value;
+ if that is unspecified, does not use SSL.
+
--subject::
Specify the initial subject of the email thread.
Only necessary if --compose is also set. If --compose
@@ -132,7 +142,16 @@ sendemail.chainreplyto::
parameter.
sendemail.smtpserver::
- Default smtp server to use.
+ Default SMTP server to use.
+
+sendemail.smtpauthuser::
+ Default SMTP-AUTH username.
+
+sendemail.smtpauthpass::
+ Default SMTP-AUTH password.
+
+sendemail.smtpssl::
+ Boolean value specifying the default to the '--smtp-ssl' parameter.
Author
------
diff --git a/git-send-email.perl b/git-send-email.perl
index f1a8855..38e8395 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -73,6 +73,12 @@ Options:
--smtp-server If set, specifies the outgoing SMTP server to use.
Defaults to localhost.
+ --smtp-authuser The username for SMTP-AUTH.
+
+ --smtp-authpass The password for SMTP-AUTH.
+
+ --smtp-ssl If set, connects to the SMTP server using SSL.
+
--suppress-from Suppress sending emails to yourself if your address
appears in a From: line. Defaults to off.
@@ -142,7 +148,6 @@ my $compose_filename = ".msg.$$";
my (@to,@cc,@initial_cc,@bcclist,@xh,
$initial_reply_to,$initial_subject,@files,$author,$sender,$compose,$time);
-my $smtp_server;
my $envelope_sender;
# Example reply to:
@@ -161,17 +166,34 @@ my ($quiet, $dry_run) = (0, 0);
# Variables with corresponding config settings
my ($thread, $chain_reply_to, $suppress_from, $signed_off_cc);
+my ($smtp_server, $smtp_authuser, $smtp_authpass, $smtp_ssl);
-my %config_settings = (
+my %config_bool_settings = (
"thread" => [\$thread, 1],
"chainreplyto" => [\$chain_reply_to, 1],
"suppressfrom" => [\$suppress_from, 0],
"signedoffcc" => [\$signed_off_cc, 1],
+ "smtpssl" => [\$smtp_ssl, 0]
+);
+
+my %config_string_settings = (
+ "smtpserver" => [\$smtp_server, undef],
+ "smtpauthuser" => [\$smtp_authuser, undef],
+ "smtpauthpass" => [\$smtp_authpass, undef],
);
-foreach my $setting (keys %config_settings) {
+foreach my $setting (keys %config_bool_settings) {
my $config = $repo->config_bool("sendemail.$setting");
- ${$config_settings{$setting}->[0]} = (defined $config) ? $config : $config_settings{$setting}->[1];
+ ${$config_bool_settings{$setting}->[0]} = (defined $config)
+ ? $config
+ : $config_bool_settings{$setting}->[1];
+}
+
+foreach my $setting (keys %config_string_settings) {
+ my $config = $repo->config("sendemail.$setting");
+ ${$config_string_settings{$setting}->[0]} = (defined $config)
+ ? $config
+ : $config_string_settings{$setting}->[1];
}
@bcclist = $repo->config('sendemail.bcc');
@@ -190,6 +212,9 @@ my $rc = GetOptions("sender|from=s" => \$sender,
"bcc=s" => \@bcclist,
"chain-reply-to!" => \$chain_reply_to,
"smtp-server=s" => \$smtp_server,
+ "smtp-authuser=s" => \$smtp_authuser,
+ "smtp-authpass=s" => \$smtp_authpass,
+ "smtp-ssl!" => \$smtp_ssl,
"compose" => \$compose,
"quiet" => \$quiet,
"suppress-from!" => \$suppress_from,
@@ -315,10 +340,7 @@ if ($thread && !defined $initial_reply_to && $prompting) {
$initial_reply_to =~ s/(^\s+|\s+$)//g;
}
-if (!$smtp_server) {
- $smtp_server = $repo->config('sendemail.smtpserver');
-}
-if (!$smtp_server) {
+if (!defined $smtp_server) {
foreach (qw( /usr/sbin/sendmail /usr/lib/sendmail )) {
if (-x $_) {
$smtp_server = $_;
@@ -548,8 +570,16 @@ X-Mailer: git-send-email $gitversion
print $sm "$header\n$message";
close $sm or die $?;
} else {
- require Net::SMTP;
- $smtp ||= Net::SMTP->new( $smtp_server );
+ if ($smtp_ssl) {
+ require Net::SMTP::SSL;
+ $smtp ||= Net::SMTP::SSL->new( $smtp_server, Port => 465 );
+ }
+ else {
+ require Net::SMTP;
+ $smtp ||= Net::SMTP->new( $smtp_server );
+ }
+ $smtp->auth( $smtp_authuser, $smtp_authpass )
+ or die $smtp->message if (defined $smtp_authuser);
$smtp->mail( $raw_from ) or die $smtp->message;
$smtp->to( @recipients ) or die $smtp->message;
$smtp->data or die $smtp->message;
--
1.5.3.rc7.17.gd77cc
next reply other threads:[~2007-09-02 3:15 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-02 3:14 Douglas Stockwell [this message]
2007-09-02 7:55 ` [PATCH] send-email: Add support for SSL and SMTP-AUTH Junio C Hamano
2007-09-02 9:43 ` Wincent Colaiuta
2007-09-02 11:06 ` David Symonds
2007-09-02 12:32 ` Johannes Schindelin
-- strict thread matches above, loose matches on Subject: below --
2007-09-02 18:06 Douglas Stockwell
2007-09-03 6:48 ` Wincent Colaiuta
2007-09-03 7:58 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11887028854022-git-send-email-doug@11011.net \
--to=douglas.stockwell@gmail.com \
--cc=doug@11011.net \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).