From 9d9175c176ba49590a8f3dd695fd3d3f5d5ebead Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Tue, 1 Jul 2008 15:25:14 +0000 Subject: [PATCH] fixed: Mail messages not properly decoded --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Mail/Get.pm | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 06d16884e..8209f5d5b 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -6,6 +6,7 @@ - fixed: Flat Discount Coupon: Add to Cart button seems broken - fixed: Deleting unProtected user profile fields - fixed: Synopsis doesn't update after editting posts + - fixed: Mail messages not properly decoded 7.5.14 - fixed: RSS feeds report modified date instead of create date diff --git a/lib/WebGUI/Mail/Get.pm b/lib/WebGUI/Mail/Get.pm index eb40182ce..24911dae7 100644 --- a/lib/WebGUI/Mail/Get.pm +++ b/lib/WebGUI/Mail/Get.pm @@ -242,12 +242,13 @@ sub parseParts { } my $body = $message->bodyhandle; if (defined $body) { - my $disposition = $message->head->get("Content-Disposition"); - my $filename = ""; - if($disposition =~ m/filename=\"(.*)\"/) { - $filename = $1; - } - return [{content => $body->as_string, type=>$type, filename=>$filename}]; + my $filename = $message->head->mime_attr('content-disposition.filename'); + my $decoder = Encode::find_encoding($message->head->mime_attr('content-type.charset')); + return [{ + content => $decoder ? $decoder->decode($body->as_string) : $body->as_string, + type => $type, + filename => $filename, + }]; } my @parts = (); foreach my $part ($message->parts) {