summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
authorKartikaya Gupta <kgupta@mozilla.com>2016-06-18 11:17:19 +0100
committerKartikaya Gupta <kgupta@mozilla.com>2016-06-18 11:17:19 +0100
commit653c5ab82baf400e798513f34779e7a2a0448bb8 (patch)
treede90b54cef922b712c5e5faf4dd4bf4a352c37bb /src/lib.rs
parent5595a17a39949253118b8d9f11ab68091892a0c7 (diff)
Default unknown body charsets to ASCII
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 4005961..2d2300e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -417,8 +417,7 @@ impl<'a> ParsedMail<'a> {
"quoted-printable" => try!(quoted_printable::decode(self.body, quoted_printable::ParseMode::Robust)),
_ => Vec::<u8>::from(self.body),
};
- let charset_conv = try!(encoding::label::encoding_from_whatwg_label(&self.ctype.charset)
- .ok_or(MailParseError::Generic("Unknown charset found", 0)));
+ let charset_conv = encoding::label::encoding_from_whatwg_label(&self.ctype.charset).unwrap_or(encoding::all::ASCII);
let str_body = try!(charset_conv.decode(&decoded, encoding::DecoderTrap::Replace).map_err(|_| {
MailParseError::Generic("Unable to convert transfer-decoded bytes from specified charset", 0)
}));
@@ -687,5 +686,8 @@ mod tests {
let mail = parse_mail(b"Content-Transfer-Encoding: base64\r\n\r\naGVsbG 8gd\r\n29ybGQ=").unwrap();
assert_eq!(mail.get_body().unwrap(), "hello world");
+
+ let mail = parse_mail(b"Content-Type: text/plain; charset=x-unknown\r\n\r\nhello world").unwrap();
+ assert_eq!(mail.get_body().unwrap(), "hello world");
}
}