Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision e3159b22

Von Moritz Bunkus vor mehr als 7 Jahren hinzugefügt

  • ID e3159b228e66bd345e33efcda84af064217f4eb9
  • Vorgänger 117332fc
  • Nachfolger 018cbc88

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.

Unterschiede anzeigen:

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},
scripts/task_server.pl
17 17
use Daemon::Generic;
18 18
use Data::Dumper;
19 19
use DateTime;
20
use Encode qw();
21 20
use English qw(-no_match_vars);
22 21
use File::Spec;
23 22
use List::MoreUtils qw(any);
......
158 157
    EVAL_PERL   => 0,
159 158
    ABSOLUTE    => 1,
160 159
    CACHE_SIZE  => 0,
160
    ENCODING    => 'utf8',
161 161
  });
162 162

  
163 163
  return debug("Could not create Template instance") unless $template;
......
174 174
      subject      => $cfg->{email_subject},
175 175
      content_type => 'text/plain',
176 176
      charset      => 'utf-8',
177
      message      => Encode::decode('utf-8', $body),
177
      message      => $body,
178 178
    )->send;
179 179

  
180 180
    1;

Auch abrufbar als: Unified diff