From 57d4a5ffe7b86d032339d6eefe1a22277f3ca113 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Tue, 17 Oct 2017 14:44:08 -0700 Subject: [PATCH] fix MIME::Entity usage for perl 5.18+, RT#77890 --- FS/FS/Misc.pm | 15 +++++++++++---- FS/FS/Template_Mixin.pm | 5 +++-- FS/FS/TicketSystem/RT_Internal.pm | 3 ++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm index ff5723fd7..ed4b10321 100644 --- a/FS/FS/Misc.pm +++ b/FS/FS/Misc.pm @@ -156,7 +156,11 @@ sub send_email { unshift @mimeparts, { 'Type' => ( $options{'content-type'} || 'text/plain' ), - 'Data' => $options{'body'}, + 'Charset' => 'UTF-8', + 'Data' => ( $options{'content-type'} =~ /^text\// + ? Encode::encode_utf8( $options{'body'} ) + : $options{'body'} + ), 'Encoding' => ( $options{'content-type'} ? '-SUGGEST' : '7bit' ), 'Disposition' => 'inline', }; @@ -165,7 +169,10 @@ sub send_email { @mimeargs = ( 'Type' => ( $options{'content-type'} || 'text/plain' ), - 'Data' => $options{'body'}, + 'Data' => ( $options{'content-type'} =~ /^text\// + ? Encode::encode_utf8( $options{'body'} ) + : $options{'body'} + ), 'Encoding' => ( $options{'content-type'} ? '-SUGGEST' : '7bit' ), ); @@ -373,7 +380,7 @@ sub generate_email { 'Type' => 'text/plain', 'Encoding' => 'quoted-printable', #'Encoding' => '7bit', - 'Data' => $data, + 'Data' => Encode::encode_utf8($data), 'Disposition' => 'inline', ); @@ -394,7 +401,7 @@ sub generate_email { ' ', ' ', ' ', - @html_data, + ( map Encode::encode_utf8($_), @html_data ), ' ', '', ], diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm index 70bc4fb5b..c97e84e83 100644 --- a/FS/FS/Template_Mixin.pm +++ b/FS/FS/Template_Mixin.pm @@ -2107,6 +2107,7 @@ Returns an argument list to be passed to L. =cut use MIME::Entity; +use Encode; sub generate_email { @@ -2174,7 +2175,7 @@ sub generate_email { if $DEBUG; # 'print_text' argument is no longer used - @text = $self->print_text(\%args); + @text = map Encode::encode_utf8($_), $self->print_text(\%args); } else { @@ -2269,7 +2270,7 @@ sub generate_email { ' ', ' ', ' ', - $html, + Encode::encode_utf8($html), ' ', '', ], diff --git a/FS/FS/TicketSystem/RT_Internal.pm b/FS/FS/TicketSystem/RT_Internal.pm index d8581272d..067615528 100644 --- a/FS/FS/TicketSystem/RT_Internal.pm +++ b/FS/FS/TicketSystem/RT_Internal.pm @@ -5,6 +5,7 @@ use vars qw( @ISA $DEBUG $me ); use Data::Dumper; use Date::Format qw( time2str ); use MIME::Entity; +use Encode; use FS::UID qw(dbh); use FS::CGI qw(popurl); use FS::TicketSystem::RT_Libs; @@ -374,7 +375,7 @@ sub create_ticket { : ( $param{'cc'} ? [ $param{'cc'} ] : [] ); my $mimeobj = MIME::Entity->build( - 'Data' => $param{'message'}, + 'Data' => Encode::encode_utf8( $param{'message'} ), 'Type' => ( $param{'mime_type'} || 'text/plain' ), ); -- 2.11.0