X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FMailer.pm;h=17981331d04fbafcac59705f3ecd5069b03a852e;hb=abc7d88b97193fe5c1c23071cd56b62e928b1fd9;hp=02b11739823bac17a44ebe8f291ff802811df2c3;hpb=c510d88bbfea6818ffafaddb7286e88aec96d3b8;p=kivitendo-erp.git diff --git a/SL/Mailer.pm b/SL/Mailer.pm index 02b117398..17981331d 100644 --- a/SL/Mailer.pm +++ b/SL/Mailer.pm @@ -31,6 +31,7 @@ package Mailer; use Email::Address; +use Encode; use SL::Common; use SL::MIME; @@ -103,18 +104,18 @@ sub send { $num_sent++; my $boundary = time() . "-$$-${num_sent}"; $boundary = "LxOffice-$self->{version}-$boundary"; - my $domain = $self->{from}; + my $domain = $self->recode($self->{from}); $domain =~ s/(.*?\@|>)//g; my $msgid = "$boundary\@$domain"; my $form = $main::form; my $myconfig = \%main::myconfig; - my $email = $myconfig->{email}; + my $email = $self->recode($myconfig->{email}); $email =~ s/[^\w\.\-\+=@]//ig; my %temp_form = ( %{ $form }, 'myconfig_email' => $email ); - my $template = PlainTextTemplate->new(undef, \%temp_form, $myconfig); + my $template = SL::Template::create(type => 'PlainText', form => \%temp_form); my $sendmail = $template->parse_block($main::sendmail); if (!open(OUT, $sendmail)) { @@ -127,12 +128,15 @@ sub send { foreach my $item (qw(to cc bcc)) { next unless ($self->{$item}); + $self->{$item} = $self->recode($self->{$item}); $self->{$item} =~ s/\</{$item} =~ s/\$<\$/{$item} =~ s/\>/>/g; $self->{$item} =~ s/\$>\$/>/g; } + $self->{from} = $self->recode($self->{from}); + my $headers = ''; foreach my $item (qw(from to cc bcc)) { next unless ($self->{$item}); @@ -151,7 +155,7 @@ sub send { } } - $headers .= sprintf("Subject: %s\n", $self->mime_quote_text($self->{subject}, 60)); + $headers .= sprintf("Subject: %s\n", $self->mime_quote_text($self->recode($self->{subject}), 60)); print OUT qq|${headers}Message-ID: <$msgid> X-Mailer: Lx-Office $self->{version} @@ -166,7 +170,7 @@ MIME-Version: 1.0 print OUT qq|--${boundary} Content-Type: $self->{contenttype}; charset="$self->{charset}" -$self->{message} +| . $self->recode($self->{message}) . qq| |; } @@ -223,7 +227,7 @@ Content-Disposition: attachment; filename="$filename"\n\n|; } else { print OUT qq|Content-Type: $self->{contenttype}; charset="$self->{charset}" -$self->{message} +| . $self->recode($self->{message}) . qq| |; } @@ -262,5 +266,12 @@ sub encode_base64 ($;$) { return $res; } +sub recode { + my $self = shift; + my $text = shift; + + return $::locale->is_utf8 ? Encode::encode('utf-8-strict', $text) : $text; +} + 1;