Bug 15133: encode correctly email generated by runreport.pl
authorFrédéric Demians <f.demians@tamil.fr>
Thu, 5 Nov 2015 07:45:25 +0000 (08:45 +0100)
committerTomas Cohen Arazi <tomascohen@theke.io>
Mon, 16 Nov 2015 18:53:57 +0000 (15:53 -0300)
/misc/cronjobs/runreport.pl send badly encoded email in text/csv
(partially ok in HTML).

TEST:

1. Send by email a report containing a subject with accented characters
   and resultset with accented characters. For example:

   ./runreport.pl --subject="éèà" --to=me@home.org  1
   ./runreport.pl --format=html --subject="éèà" --to=me@home.org  1

   The first email contains badly encoded subject & message. The second email
   contains badly encoded subject, but correct message.

2. Apply the patch

3. Repeat 1 => No more strange characters.

Signed-off-by: Liz Rea <liz@catalyst.net.nz>
Characters are correctly encoded now, thanks for that good spot.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

misc/cronjobs/runreport.pl

index 6b25908..9afec7e 100755 (executable)
@@ -273,27 +273,14 @@ foreach my $report_id (@ARGV) {
         }
     }
     if ($email){
-        my $email = Koha::Email->new();
-        my %mail;
+        my $args = { to => $to, from => $from, subject => $subject };
         if ($format eq 'html') {
-                $message = "<html><head><style>tr:nth-child(2n+1) { background-color: #ccc;}</style></head><body>$message</body></html>";
-           %mail = $email->create_message_headers({
-              to      => $to,
-              from    => $from,
-              contenttype => 'text/html',
-              subject => encode('utf8', $subject ),
-              message => encode('utf8', $message )
-           }
-          );
-        } else {
-          %mail = $email->create_message_headers ({
-              to      => $to,
-              from    => $from,
-              subject => encode('utf8', $subject ),
-              message => encode('utf8', $message )
-          }
-          );
+            $message = "<html><head><style>tr:nth-child(2n+1) { background-color: #ccc;}</style></head><body>$message</body></html>";
+            $args->{contenttype} = 'text/html';
         }
+        $args->{message} = $message;
+        my $email = Koha::Email->new();
+        my %mail = $email->create_message_headers($args);
         $mail{'Auth'} = {user => $username, pass => $password, method => $method} if $username;
         sendmail(%mail) or carp 'mail not sent:' . $Mail::Sendmail::error;
     } else {