caff: Create the mail files in ~/.caff/keys even if mail is not sent (closes: #590666)
authorweasel <weasel@b513b33f-fedd-0310-b452-c3deb5f4c849>
Sat, 31 Jul 2010 12:19:29 +0000 (12:19 +0000)
committerweasel <weasel@b513b33f-fedd-0310-b452-c3deb5f4c849>
Sat, 31 Jul 2010 12:19:29 +0000 (12:19 +0000)
git-svn-id: svn://svn.debian.org/pgp-tools/trunk@479 b513b33f-fedd-0310-b452-c3deb5f4c849

caff/caff
debian/changelog

index 992aee67e508cfa042dbb3863a6beb3395ced32a..f9bb72d90404f88805d17e13328ec408c3f892fa 100755 (executable)
--- a/caff/caff
+++ b/caff/caff
@@ -756,13 +756,13 @@ sub import_key($$) {
 
 
 ######
-# Send an email to $address.  If $can_encrypt is true then the mail
+# Create an email to $address.  If $can_encrypt is true then the mail
 # will be PGP/MIME encrypted to $longkeyid.
 #
 # $longkeyid, $uid, and @attached will be used in the email and the template.
 ######
-#send_mail($address, $can_encrypt, $longkeyid, $uid, @attached);
-sub send_mail($$$@) {
+# create_mail($address, $can_encrypt, $longkeyid, $uid, @attached);
+sub create_mail($$$@) {
        my ($address, $can_encrypt, $key_id, @keys) = @_;
 
        my $template = Text::Template->new(TYPE => 'STRING', SOURCE => $CONFIG{'mail-template'})
@@ -855,9 +855,21 @@ sub send_mail($$$@) {
        $message_entity->head->add("Reply-To", $CONFIG{'reply-to'}) if defined $CONFIG{'reply-to'};
        $message_entity->head->add("Bcc", $CONFIG{'bcc'}) if defined $CONFIG{'bcc'};
        $message_entity->head->add("User-Agent", $USER_AGENT);
-       mywarn("You have set arguments to pass to Mail::Mailer.  Better fix your MTA.  (Also, Mail::Mailer's error reporting is non existant, so it won't tell you when it doesn't work.)") if (scalar @{$CONFIG{'mailer-send'}} > 0);
+       return $message_entity;
+};
+
+######
+# send a mail message (MIME::Entity)
+######
+my $warned_about_broken_mailer_send = 0;
+sub send_message($) {
+       my ($message_entity) = @_;
+
+       if ( (scalar @{$CONFIG{'mailer-send'}} > 0) && !$warned_about_broken_mailer_send) {
+               mywarn("You have set arguments to pass to Mail::Mailer.  Better fix your MTA.  (Also, Mail::Mailer's error reporting is non existant, so it won't tell you when it doesn't work.)");
+               $warned_about_broken_mailer_send = 1;
+       };
        $message_entity->send(@{$CONFIG{'mailer-send'}});
-       $message_entity->stringify();
 };
 
 ######
@@ -1451,17 +1463,18 @@ for my $keyid (@keyids_ok) {
                        if (!$uid->{'is_uat'} && ($uid->{'text'} =~ /@/)) {
                                my $address = $uid->{'text'};
                                $address =~ s/.*<(.*)>.*/$1/;
-                               if (ask("Mail signature for $uid->{'text'} to '$address'?", $CONFIG{'mail'} ne 'ask-no', $CONFIG{'mail'} eq 'yes')) {
-                                       my $mail = send_mail($address, $can_encrypt, $longkeyid, $uid, @attached);
-                                       if (defined $mail) {
-                                               my $keydir = "$KEYSBASE/$DATE_STRING";
-                                               my $mailfile = "$keydir/$longkeyid.mail.".$uid->{'serial'}.".".sanitize_uid($uid->{'text'});
-                                               open (KEY, ">$mailfile") or die ("Cannot open $mailfile: $!\n");
-                                               print KEY $mail;
-                                               close KEY;
-                                       } else {
-                                               warn "Generating mail failed.\n";
-                                       };
+                               my $mail = create_mail($address, $can_encrypt, $longkeyid, $uid, @attached);
+                               if (defined $mail) {
+                                       my $should_send_mail = ask("Mail signature for $uid->{'text'} to '$address'?", $CONFIG{'mail'} ne 'ask-no', $CONFIG{'mail'} eq 'yes');
+                                       send_message($mail) if $should_send_mail;
+
+                                       my $keydir = "$KEYSBASE/$DATE_STRING";
+                                       my $mailfile = "$keydir/$longkeyid.mail.".($should_send_mail ? '' : 'unsent.').$uid->{'serial'}.".".sanitize_uid($uid->{'text'});
+                                       open (MAILFILE, ">$mailfile") or die ("Cannot open $mailfile: $!\n");
+                                       print MAILFILE $mail->stringify();
+                                       close MAILFILE;
+                               } else {
+                                       warn "Generating mail failed.\n";
                                };
                        };
                };
index 02fc55393c6ef5ddf18a00447a5e76177ebbbb59..80a62f829e293f137c100c8db49c86a50e58092f 100644 (file)
@@ -35,8 +35,10 @@ signing-party (1.1.4-1) UNRELEASED; urgency=low
     + Make importing of keys to be signed from the normal gpg optional
       (--keys-from-gnupg).
     + refactor copying of command line options into global config variable.
+    + Create the mail files in ~/.caff/keys even if mail is not sent
+      (closes: #590666).
 
- -- Peter Palfrader <weasel@debian.org>  Sat, 31 Jul 2010 13:32:57 +0200
+ -- Peter Palfrader <weasel@debian.org>  Sat, 31 Jul 2010 14:18:09 +0200
 
 signing-party (1.1.3-1) unstable; urgency=low