X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FMailer%2FSendmail.pm;h=59c43cdd1302317a62b5dea6f6cec748d84fdfcf;hb=1d99e3e9537f75342a9f20f1e89a3e8cb4bb5444;hp=ea1e63b8a214e384143b71b330cda75655e569bb;hpb=9d218dc8b07ff4f9be9589cb3246e50653e2b6e2;p=kivitendo-erp.git diff --git a/SL/Mailer/Sendmail.pm b/SL/Mailer/Sendmail.pm index ea1e63b8a..59c43cdd1 100644 --- a/SL/Mailer/Sendmail.pm +++ b/SL/Mailer/Sendmail.pm @@ -10,15 +10,19 @@ use parent qw(Rose::Object); use Rose::Object::MakeMethods::Generic ( - scalar => [ qw(myconfig mailer form) ] + scalar => [ qw(myconfig mailer form status extended_status) ] ); sub init { my ($self) = @_; - Rose::Object::init(@_); + Rose::Object::init( + @_, + status => 'failed', + extended_status => 'no send attempt made', + ); - my $email = $::locale->is_utf8 ? Encode::encode('utf-8', $self->myconfig->{email}) : $self->myconfig->{email}; + my $email = Encode::encode('utf-8', $self->myconfig->{email}); $email =~ s/[^\w\.\-\+=@]//ig; my %temp_form = ( %{ $self->form }, myconfig_email => $email ); @@ -26,8 +30,8 @@ sub init { my $sendmail = $::lx_office_conf{applications}->{sendmail} || $::lx_office_conf{mail_delivery}->{sendmail} || "sendmail -t"; $sendmail = $template->parse_block($sendmail); - $self->{sendmail} = IO::File->new("|$sendmail") || die "sendmail($sendmail): $!"; - $self->{sendmail}->binmode(':utf8') if $::locale->is_utf8; + $self->{sendmail} = IO::File->new("|$sendmail") or do { $self->extended_status("sendmail($sendmail): $!"); die $self->extended_status; }; + $self->{sendmail}->binmode(':utf8'); } sub start_mail { @@ -36,12 +40,17 @@ sub start_mail { sub print { my $self = shift; - $self->{sendmail}->print(@_); + $self->{sendmail}->print(@_) or do { $self->extended_status("sendmail: $!"); die $self->extended_status; }; } sub send { my ($self) = @_; - $self->{sendmail}->close; + + $self->{sendmail}->close or do { $self->extended_status("sendmail: $!"); die $self->extended_status; }; + + $self->status('ok'); + $self->extended_status(''); + delete $self->{sendmail}; }