]> git.decadent.org.uk Git - dak.git/blobdiff - tools/debianqueued-0.9/debianqueued
Merge mailtags again
[dak.git] / tools / debianqueued-0.9 / debianqueued
index d6f2afdc7970c7ef13d662ecff2ec92e9bcc0ef8..d58889f057e05a1afc44a4ac262fed0c131cc459 100755 (executable)
@@ -276,11 +276,14 @@ $junk = $conf::no_changes_timeout;
 $junk = @conf::nonus_packages;
 $junk = @conf::test_binaries;
 $junk = @conf::maintainer_mail;
+$junk = $conf::mail ||= '/usr/sbin/sendmail';
 $conf::target = "localhost" if $conf::upload_method eq "copy";
 package main;
 
 ($main::progname = $0) =~ s,.*/,,;
 
+my %packages = ();
+
 # extract -r and -k args
 $main::arg = "";
 if (@ARGV == 1 && $ARGV[0] =~ /^-[rk]$/) {
@@ -790,6 +793,7 @@ sub process_changes($\@) {
                elsif (/^Source:\s*/i) {
                        chomp( $pkgname = $' );
                        $pkgname =~ s/\s+$//;
+                        $main::packages{$pkgname}++;
                }
                elsif (/^Files:/i) {
                        while( <CHANGES> ) {
@@ -2078,6 +2082,7 @@ sub init_mail(;$) {
 
        $main::mail_addr = "";
        $main::mail_text = "";
+        %main::packages  = ();
        $main::mail_subject = $file ? "Processing of $file" : "";
 }
 
@@ -2086,7 +2091,6 @@ sub init_mail(;$) {
 # then send out
 #
 sub finish_mail() {
-       local( *MAIL );
 
        debug( "No mail for $main::mail_addr" )
                if $main::mail_addr && !$main::mail_text;
@@ -2120,18 +2124,38 @@ sub send_mail($$$) {
        my $subject = shift;
        my $text = shift;
 
-       debug( "Sending mail to $addr" );
-       debug( "executing $conf::mail -s '$subject' '$addr'" );
-       if (!open( MAIL, "|$conf::mail -s '$subject' '$addr'" )) {
-               msg( "log", "Could not open pipe to $conf::mail: $!\n" );
-               return 0;
+       my $package = keys %main::packages ? join(' ', keys %main::packages) : "";
+
+       use Email::Send;
+
+        unless (defined($Email::Send::Sendmail::SENDMAIL)) {
+               $Email::Send::Sendmail::SENDMAIL = $conf::mail;
+       }
+
+       my $message = <<__MESSAGE__;
+To: $addr
+From: Archive Administrator <dak\@ftp-master.debian.org>
+Subject: $subject
+X-Debian: DAK
+__MESSAGE__
+
+       if (length $package) {
+               $message .= "X-Debian-Package: $package\n";
+       }
+
+       $message .= "\n$text";
+       $message .= "\nGreetings,\n\n\tYour Debian queue daemon\n";
+
+       my $mail = Email::Send->new;
+       for ( qw[Sendmail SMTP] ) {
+               $mail->mailer($_) and last if $mail->mailer_available($_);
        }
-       print MAIL $text;
-       print MAIL "\nGreetings,\n\n\tYour Debian queue daemon\n";
-       if (!close( MAIL )) {
-               msg( "log", "$conf::mail failed (exit status ", $? >> 8, ")\n" );
+
+       my $ret = $mail->send($message);
+       if ($ret && $ret !~ /Message sent|success/) {
                return 0;
        }
+
        return 1;
 }