summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2012-12-10 22:04:13 +0000
committerdakkar <dakkar@thenautilus.net>2012-12-10 22:04:13 +0000
commit6f56b6760a50f472db666c7c8173383b2ef44ef9 (patch)
tree9639e19cffa0225b1e3d2793aa2d9145eae2d28c /lib
parentavoid assigning undef (diff)
downloadfeeder-6f56b6760a50f472db666c7c8173383b2ef44ef9.tar.gz
feeder-6f56b6760a50f472db666c7c8173383b2ef44ef9.tar.bz2
feeder-6f56b6760a50f472db666c7c8173383b2ef44ef9.zip
fix mail header encoding
Diffstat (limited to 'lib')
-rw-r--r--lib/Feed/HelperRole/Mail.pm10
1 files changed, 8 insertions, 2 deletions
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;
}