From c414dd639c836d59169090250287d889a22657f6 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Thu, 14 Nov 2013 12:17:38 +0100 Subject: [PATCH] Bug 10605: Encoding issue on sending a basket (OPAC) There is an encoding issue on the received mail. Here, we have to keep the encode_qp in order not to break links (= is a special char for email https://en.wikipedia.org/wiki/MIME#Encoded-Word). I don't understand why I have to decode the string before the call to encode_qp but it is the only way not to have encoding issue... --- opac/opac-sendbasket.pl | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/opac/opac-sendbasket.pl b/opac/opac-sendbasket.pl index da74745..fddebe9 100755 --- a/opac/opac-sendbasket.pl +++ b/opac/opac-sendbasket.pl @@ -21,7 +21,7 @@ use strict; use warnings; use CGI; -use Encode qw(encode); +use Encode qw(decode encode); use Carp; use Mail::Sendmail; @@ -127,25 +127,33 @@ if ( $email_add ) { my $body; # Analysing information and getting mail properties - if ( $template_res =~ /\n(.*)\n?/s ) { - $mail{'subject'} = $1; + + if ( $template_res =~ /(.*)/s ) { + $mail{subject} = $1; + $mail{subject} =~ s|\n?(.*)\n?|$1|; } else { $mail{'subject'} = "no subject"; } my $email_header = ""; - if ( $template_res =~ /
\n(.*)\n?/s ) { - $email_header = encode_qp($1); + if ( $template_res =~ /
(.*)/s ) { + $email_header = $1; + $email_header =~ s|\n?(.*)\n?|$1|; } my $email_file = "basket.txt"; - if ( $template_res =~ /\n(.*)\n?/s ) { + if ( $template_res =~ /(.*)/s ) { $email_file = $1; + $email_file =~ s|\n?(.*)\n?|$1|; } - if ( $template_res =~ /\n(.*)\n?/s ) { - $body = encode_qp($1); + if ( $template_res =~ /(.*)/s ) { + $body = $1; + $body =~ s|\n?(.*)\n?|$1|; + $body = encode("UTF-8", encode_qp(decode("UTF-8", $body))); } + $mail{body} = $body; + my $boundary = "====" . time() . "===="; $mail{'content-type'} = "multipart/mixed; boundary=\"$boundary\""; -- 1.7.10.4