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;
sub default_headers {
my %param = validate_with(params => \@_,
- spec => {queue_file => {type => SCALAR,
+ spec => {queue_file => {type => SCALAR|UNDEF,
optional => 1,
},
data => {type => HASHREF,
optional => 1,
},
- msgid => {type => SCALAR,
+ msgid => {type => SCALAR|UNDEF,
optional => 1,
},
- msgtype => {type => SCALAR,
+ msgtype => {type => SCALAR|UNDEF,
default => 'misc',
- optional => 1,
},
- pr_msg => {type => SCALAR,
+ pr_msg => {type => SCALAR|UNDEF,
default => 'misc',
},
headers => {type => ARRAYREF,
);
my @header_order = (qw(X-Loop From To subject),
qw(Message-ID In-Reply-To References));
+ # handle various things being undefined
+ if (not exists $param{queue_file} or
+ not defined $param{queue_file}) {
+ $param{queue_file} = join('',gettimeofday())
+ }
+ for (qw(msgtype pr_msg)) {
+ if (not exists $param{$_} or
+ not defined $param{$_}) {
+ $param{$_} = 'misc';
+ }
+ }
my %header_order;
@header_order{map {lc $_} @header_order} = 0..$#header_order;
my %set_headers;
($header,$default_header{$header});
}
else {
- push @other_headers,($header,$header_order{lc($header)});
+ push @other_headers,($header,$default_header{$header});
}
}
my @headers;
sub send_mail_message{
my %param = validate_with(params => \@_,
spec => {sendmail_arguments => {type => ARRAYREF,
- default => [qw(-odq -oem -oi)],
+ default => $config{sendmail_arguments},
},
parse_for_recipients => {type => BOOLEAN,
default => 0,
},
},
);
- my @sendmail_arguments = qw(-odq -oem -oi);
+ my @sendmail_arguments = @{$param{sendmail_arguments}};
push @sendmail_arguments, '-f', $param{envelope_from} if exists $param{envelope_from};
my @recipients;