]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Mail.pm
merge changes from dla source branch
[debbugs.git] / Debbugs / Mail.pm
index e9cb46e250e513d5993ee24fa21e02c0d3a278dd..41a67802b2632154a2590e2e382245b3baad5346 100644 (file)
@@ -43,11 +43,12 @@ use base qw(Exporter);
 
 use IPC::Open3;
 use POSIX qw(:sys_wait_h strftime);
-use Time::HiRes qw(usleep);
+use Time::HiRes qw(usleep gettimeofday);
 use Mail::Address ();
 use Debbugs::MIME qw(encode_rfc1522);
 use Debbugs::Config qw(:config);
 use Params::Validate qw(:types validate_with);
+use Encode qw(encode is_utf8);
 
 use Debbugs::Packages;
 
@@ -204,7 +205,7 @@ sub default_headers {
 
     # calculate our headers
     my $bug_num = exists $param{data} ? $param{data}{bug_num} : 'x';
-    my $nn = $param{queue_file};
+    my $nn = exists $param{queue_file} ? $param{queue_file} : join('',gettimeofday());
     # handle the user giving the actual queue filename instead of nn
     $nn =~ s/^[a-zA-Z]([a-zA-Z])/$1/;
     $nn = lc($nn);
@@ -250,7 +251,7 @@ sub default_headers {
                ($header,$default_header{$header});
        }
        else {
-           push @other_headers,($header,$header_order{lc($header)});
+           push @other_headers,($header,$default_header{$header});
        }
     }
     my @headers;
@@ -310,7 +311,7 @@ using warn.
 sub send_mail_message{
      my %param = validate_with(params => \@_,
                               spec  => {sendmail_arguments => {type => ARRAYREF,
-                                                               default => [$config{sendmail_arguments}],
+                                                               default => $config{sendmail_arguments},
                                                               },
                                         parse_for_recipients => {type => BOOLEAN,
                                                                  default => 0,
@@ -346,6 +347,11 @@ sub send_mail_message{
      if ($param{encode_headers}) {
          $param{message} = encode_headers($param{message});
      }
+     eval {
+        if (is_utf8($param{message})) {
+            $param{message} = encode('utf8',$param{message});
+        }
+     };
 
      # First, try to send the message as is.
      eval {