Revision e3159b22
Von Moritz Bunkus vor mehr als 7 Jahren hinzugefügt
SL/BackgroundJob/FailedBackgroundJobsReport.pm | ||
---|---|---|
39 | 39 |
EVAL_PERL => 0, |
40 | 40 |
ABSOLUTE => 1, |
41 | 41 |
CACHE_SIZE => 0, |
42 |
ENCODING => 'utf8', |
|
42 | 43 |
}) || die("Could not create Template instance"); |
43 | 44 |
|
44 | 45 |
my $file_name = $self->data->{template} || 'templates/webpages/failed_background_jobs_report/email.txt'; |
45 | 46 |
my $body; |
46 | 47 |
$template->process($file_name, { SELF => $self }, \$body); |
47 |
$body = Encode::decode('utf-8', $body); |
|
48 | 48 |
|
49 | 49 |
Mailer->new( |
50 | 50 |
from => $self->data->{from}, |
Auch abrufbar als: Unified diff
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.