Skip to content

Commit

Permalink
Merge branch 'gr/smtp'
Browse files Browse the repository at this point in the history
* gr/smtp:
  send-email --smtp-server-port: allow overriding the default port
  • Loading branch information
Junio C Hamano committed Sep 29, 2007
2 parents 3a22917 + 44b2476 commit 2a858ee
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 7 deletions.
5 changes: 5 additions & 0 deletions Documentation/git-send-email.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,11 @@ 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-server-port::
Specifies a port different from the default port (SMTP
servers typically listen to smtp port 25 and ssmtp port
465).

--smtp-user, --smtp-pass::
Username and password for SMTP-AUTH. Defaults are the values of
the configuration values 'sendemail.smtpuser' and
Expand Down
33 changes: 26 additions & 7 deletions git-send-email.perl
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,10 @@ sub usage {
the default section.
--smtp-server If set, specifies the outgoing SMTP server to use.
Defaults to localhost.
Defaults to localhost. Port number can be specified here with
hostname:port format or by using --smtp-server-port option.
--smtp-server-port Specify a port on the outgoing SMTP server to connect to.
--smtp-user The username for SMTP-AUTH.
Expand Down Expand Up @@ -172,8 +175,8 @@ sub format_2822_time {

# Variables with corresponding config settings
my ($thread, $chain_reply_to, $suppress_from, $signed_off_cc, $cc_cmd);
my ($smtp_server, $smtp_authuser, $smtp_authpass, $smtp_ssl);
my ($identity, $aliasfiletype, @alias_files);
my ($smtp_server, $smtp_server_port, $smtp_authuser, $smtp_authpass, $smtp_ssl);
my ($identity, $aliasfiletype, @alias_files, @smtp_host_parts);

my %config_bool_settings = (
"thread" => [\$thread, 1],
Expand All @@ -185,6 +188,7 @@ sub format_2822_time {

my %config_settings = (
"smtpserver" => \$smtp_server,
"smtpserverport" => \$smtp_server_port,
"smtpuser" => \$smtp_authuser,
"smtppass" => \$smtp_authpass,
"cccmd" => \$cc_cmd,
Expand All @@ -204,6 +208,7 @@ sub format_2822_time {
"bcc=s" => \@bcclist,
"chain-reply-to!" => \$chain_reply_to,
"smtp-server=s" => \$smtp_server,
"smtp-server-port=s" => \$smtp_server_port,
"smtp-user=s" => \$smtp_authuser,
"smtp-pass=s" => \$smtp_authpass,
"smtp-ssl!" => \$smtp_ssl,
Expand Down Expand Up @@ -602,16 +607,30 @@ sub send_message
print $sm "$header\n$message";
close $sm or die $?;
} else {

if (!defined $smtp_server) {
die "The required SMTP server is not properly defined."
}

if ($smtp_ssl) {
$smtp_server_port ||= 465; # ssmtp
require Net::SMTP::SSL;
$smtp ||= Net::SMTP::SSL->new( $smtp_server, Port => 465 );
$smtp ||= Net::SMTP::SSL->new($smtp_server, Port => $smtp_server_port);
}
else {
require Net::SMTP;
$smtp ||= Net::SMTP->new( $smtp_server );
$smtp ||= Net::SMTP->new((defined $smtp_server_port)
? "$smtp_server:$smtp_server_port"
: $smtp_server);
}

if (!$smtp) {
die "Unable to initialize SMTP properly. Is there something wrong with your config?";
}

if ((defined $smtp_authuser) && (defined $smtp_authpass)) {
$smtp->auth( $smtp_authuser, $smtp_authpass ) or die $smtp->message;
}
$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;
Expand Down

0 comments on commit 2a858ee

Please sign in to comment.