From 6f56b6760a50f472db666c7c8173383b2ef44ef9 Mon Sep 17 00:00:00 2001 From: dakkar Date: Mon, 10 Dec 2012 22:04:13 +0000 Subject: fix mail header encoding --- lib/Feed/HelperRole/Mail.pm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/Feed/HelperRole/Mail.pm b/lib/Feed/HelperRole/Mail.pm index b7f2789..37da7f1 100644 --- a/lib/Feed/HelperRole/Mail.pm +++ b/lib/Feed/HelperRole/Mail.pm @@ -11,6 +11,7 @@ use Template; use Template::Provider::Encoding; use Template::Stash::ForceUTF8; use Moose::Util::TypeConstraints; +use Try::Tiny; subtype 'ArrayOfStr', as 'ArrayRef[Str]'; coerce 'ArrayOfStr', from 'Str', via { [ $_ ] }; @@ -75,7 +76,10 @@ sub entry_to_mime { my $date = $entry->modified // $entry->issued // DateTime->now(time_zone=>'UTC'); my $from_name = $entry->author // $self->title; + try { $from_name = decode('utf-8',$from_name) }; $from_name =~ tr/,//d; + my $subject = $entry->title//'(no title)'; + try { $subject = decode('utf-8',$subject) }; my $id = sha1_hex($entry->id); my $body = $self->prepare_body($entry); @@ -84,7 +88,7 @@ sub entry_to_mime { Date => $self->date_formatter->format_datetime($date), From => encode('MIME-Header',qq{"$from_name" <$from>}), To => $from, - Subject => encode('MIME-Header',$entry->title//'(no title)'), + Subject => encode('MIME-Header',$subject), Type => 'multipart/related', ); $msg->attach( @@ -94,7 +98,9 @@ sub entry_to_mime { ); $msg->add('Message-Id', "<$id.feeder\@localhost>"); - $msg->add('X-Tags', encode('MIME-Header', join(' ', $entry->tags ))); + my @tags = $entry->tags; + try { @tags = map { decode('utf-8',$_) } @tags }; + $msg->add('X-Tags', encode('MIME-Header', join(' ', @tags ))); return $msg; } -- cgit v1.2.3