From: Eric Wong <normalperson@yhbt.net>
To: Junio C Hamano <junkio@cox.net>
Cc: git <git@vger.kernel.org>, Ryan Anderson <ryan@michonline.com>,
Greg KH <greg@kroah.com>, Eric Wong <normalperson@yhbt.net>
Subject: [PATCH 1/4] send-email: Change from Mail::Sendmail to Net::SMTP
Date: Sat, 25 Mar 2006 02:43:30 -0800 [thread overview]
Message-ID: <11432834102700-git-send-email-normalperson@yhbt.net> (raw)
In-Reply-To: <11432834101430-git-send-email-normalperson@yhbt.net>
Net::SMTP is in the base Perl distribution, so users are more
likely to have it. Net::SMTP also allows reusing the SMTP
connection, so sending multiple emails is faster.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
git-send-email.perl | 66 ++++++++++++++++++++++++++++++++-------------------
1 files changed, 41 insertions(+), 25 deletions(-)
7155ae6e5f94a8fdf55f50029af27279dd36fd0a
diff --git a/git-send-email.perl b/git-send-email.perl
index b220d11..efaf457 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -19,11 +19,17 @@
use strict;
use warnings;
use Term::ReadLine;
-use Mail::Sendmail qw(sendmail %mailcfg);
use Getopt::Long;
use Data::Dumper;
+use Net::SMTP;
use Email::Valid;
+# most mail servers generate the Date: header, but not all...
+$ENV{LC_ALL} = 'C';
+use POSIX qw/strftime/;
+
+my $smtp;
+
sub unique_email_list(@);
sub cleanup_compose_files();
@@ -271,35 +277,45 @@ $cc = "";
sub send_message
{
- my $to = join (", ", unique_email_list(@to));
-
- %mail = ( To => $to,
- From => $from,
- CC => $cc,
- Subject => $subject,
- Message => $message,
- 'Reply-to' => $from,
- 'In-Reply-To' => $reply_to,
- 'Message-ID' => $message_id,
- 'X-Mailer' => "git-send-email",
- );
-
- $mail{smtp} = $smtp_server;
- $mailcfg{mime} = 0;
-
- #print Data::Dumper->Dump([\%mail],[qw(*mail)]);
-
- sendmail(%mail) or die $Mail::Sendmail::error;
+ my @recipients = unique_email_list(@to);
+ my $to = join (",\n\t", @recipients);
+ @recipients = unique_email_list(@recipients,@cc);
+ my $date = strftime('%a, %d %b %Y %H:%M:%S %z', localtime(time));
+
+ my $header = "From: $from
+To: $to
+Cc: $cc
+Subject: $subject
+Reply-To: $from
+Date: $date
+Message-Id: $message_id
+X-Mailer: git-send-email
+";
+ $header .= "In-Reply-To: $reply_to\n" if $reply_to;
+
+ $smtp ||= Net::SMTP->new( $smtp_server );
+ $smtp->mail( $from ) or die $smtp->message;
+ $smtp->to( @recipients ) or die $smtp->message;
+ $smtp->data or die $smtp->message;
+ $smtp->datasend("$header\n$message") or die $smtp->message;
+ $smtp->dataend() or die $smtp->message;
+ $smtp->ok or die "Failed to send $subject\n".$smtp->message;
if ($quiet) {
- printf "Sent %s\n", $subject;
+ print "Sent $subject\n";
} else {
- print "OK. Log says:\n", $Mail::Sendmail::log;
- print "\n\n"
+ print "OK. Log says:
+Date: $date
+Server: $smtp_server Port: 25
+From: $from
+Subject: $subject
+Cc: $cc
+To: $to
+
+Result: ", $smtp->code, ' ', ($smtp->message =~ /\n([^\n]+\n)$/s), "\n";
}
}
-
$reply_to = $initial_reply_to;
make_message_id();
$subject = $initial_subject;
@@ -390,7 +406,7 @@ sub cleanup_compose_files() {
}
-
+$smtp->quit if $smtp;
sub unique_email_list(@) {
my %seen;
--
1.2.4.gb622a
next prev parent reply other threads:[~2006-03-25 10:44 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-25 10:43 send-email: dependency removal, cleanup, + small feature Eric Wong
2006-03-25 10:43 ` Eric Wong [this message]
2006-03-25 23:58 ` [PATCH 1/4] send-email: Change from Mail::Sendmail to Net::SMTP Ryan Anderson
2006-03-26 0:54 ` Eric Wong
2006-03-26 1:09 ` Junio C Hamano
2006-03-26 1:20 ` [PATCH] " Eric Wong
2006-04-26 0:45 ` Martin Langhoff
2006-04-26 20:17 ` Junio C Hamano
2006-04-26 20:24 ` Martin Langhoff
2006-04-28 0:27 ` Eric Wong
2006-04-28 1:04 ` Martin Langhoff
2006-03-25 10:43 ` [PATCH 3/4] send-email: lazy-load Email::Valid and make it optional Eric Wong
2006-03-25 15:07 ` Randal L. Schwartz
2006-03-25 20:33 ` Junio C Hamano
2006-03-26 0:47 ` [PATCH] " Eric Wong
2006-03-25 10:43 ` [PATCH 4/4] send-email: add support for mutt aliases files Eric Wong
2006-03-25 20:31 ` Junio C Hamano
2006-03-25 23:50 ` Ryan Anderson
2006-03-26 1:10 ` [PATCH] send-email: address expansion for common mailers Eric Wong
2006-03-26 1:30 ` Junio C Hamano
2006-03-26 2:44 ` Eric Wong
2006-05-15 2:13 ` [PATCH (resend)] " Eric Wong
2006-05-15 4:12 ` Ryan Anderson
2006-03-25 10:43 ` [PATCH 2/4] send-email: use built-in time() instead of /bin/date '+%s' Eric Wong
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=11432834102700-git-send-email-normalperson@yhbt.net \
--to=normalperson@yhbt.net \
--cc=git@vger.kernel.org \
--cc=greg@kroah.com \
--cc=junkio@cox.net \
--cc=ryan@michonline.com \
/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).