try fix filename encoding bug -- fails in one test

This commit is contained in:
holger krekel
2019-12-05 14:24:05 +01:00
parent 3b8e37de58
commit e45ee0eb81
3 changed files with 16 additions and 10 deletions

View File

@@ -579,14 +579,23 @@ impl<'a> MimeParser<'a> {
// `Content-Disposition: ... filename*=...`
// or `Content-Disposition: ... filename*0*=... filename*1*=... filename*2*=...`
// or `Content-Disposition: ... filename=...`
use quoted_printable::ParseMode::Robust;
let ct = mail.get_content_disposition()?;
let mut desired_filename = ct
.params
.iter()
.filter(|(key, _value)| key.starts_with("filename"))
.fold(String::new(), |mut acc, (_key, value)| {
acc += value;
.fold(String::new(), |mut acc, (key, value)| {
if key.starts_with("filename*") {
quoted_printable::decode(&value, Robust)
.map(|ref res| {
acc += &String::from_utf8_lossy(res);
})
.ok();
} else {
acc += value;
};
acc
});