From: Moritz Bunkus Date: Mon, 22 May 2017 09:37:35 +0000 (+0200) Subject: Task-Server & FailedBackgroundJobsReport: Encoding des E-Mail-Bodys gefixt X-Git-Tag: release-3.5.4~1075 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=e3159b228e66bd345e33efcda84af064217f4eb9;p=kivitendo-erp.git Task-Server & FailedBackgroundJobsReport: Encoding des E-Mail-Bodys gefixt SL::Mailer erwartet die Einträge in Perls internem Encoding. Daher ist jegliche Verwendung von Encode::decode(…) falsch. Zusätzlich muss aber dem Template-Toolkit mitegeteilt werden, dass die E-Mail-Vorlagen-Datei bereits UTF-8 encodiert wird. Nur dann wandelt Template die beim Lesen ins interne Encoding um. Damit spielt nun alles richtig zusammen: • Daten aus der DB werden vom DB-Treiber in Perls internes Encoding gewandelt. • Die E-Mail-Vorlagendatei wird von Template in Perls internes Encoding gewandelt. • Beim Verschicken wird Perls internes Encoding von Net::SMTP (oder welchem Modul auch letztlich genutzt wird) aus Perls internem Encoding in das Wire-Format gewandelt. Behebt #257. --- diff --git a/SL/BackgroundJob/FailedBackgroundJobsReport.pm b/SL/BackgroundJob/FailedBackgroundJobsReport.pm index e0bea8b67..a29aea501 100644 --- a/SL/BackgroundJob/FailedBackgroundJobsReport.pm +++ b/SL/BackgroundJob/FailedBackgroundJobsReport.pm @@ -39,12 +39,12 @@ sub send_email { EVAL_PERL => 0, ABSOLUTE => 1, CACHE_SIZE => 0, + ENCODING => 'utf8', }) || die("Could not create Template instance"); my $file_name = $self->data->{template} || 'templates/webpages/failed_background_jobs_report/email.txt'; my $body; $template->process($file_name, { SELF => $self }, \$body); - $body = Encode::decode('utf-8', $body); Mailer->new( from => $self->data->{from}, diff --git a/scripts/task_server.pl b/scripts/task_server.pl index 1dbfb4505..cfdd8668b 100755 --- a/scripts/task_server.pl +++ b/scripts/task_server.pl @@ -17,7 +17,6 @@ use Cwd; use Daemon::Generic; use Data::Dumper; use DateTime; -use Encode qw(); use English qw(-no_match_vars); use File::Spec; use List::MoreUtils qw(any); @@ -158,6 +157,7 @@ sub notify_on_failure { EVAL_PERL => 0, ABSOLUTE => 1, CACHE_SIZE => 0, + ENCODING => 'utf8', }); return debug("Could not create Template instance") unless $template; @@ -174,7 +174,7 @@ sub notify_on_failure { subject => $cfg->{email_subject}, content_type => 'text/plain', charset => 'utf-8', - message => Encode::decode('utf-8', $body), + message => $body, )->send; 1;