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.
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},
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);
EVAL_PERL => 0,
ABSOLUTE => 1,
CACHE_SIZE => 0,
+ ENCODING => 'utf8',
});
return debug("Could not create Template instance") unless $template;
subject => $cfg->{email_subject},
content_type => 'text/plain',
charset => 'utf-8',
- message => Encode::decode('utf-8', $body),
+ message => $body,
)->send;
1;