diff --git a/Cargo.lock b/Cargo.lock index 09d99832d..dbde0f9e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2079,9 +2079,9 @@ dependencies = [ [[package]] name = "mailparse" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a77a7f161b32d0314404306b8ed5966b34b797fc9ef6bcf6686935162da3c" +checksum = "31de1f9043c582efde7dbd93de56600df12b6c4488a67eeaefa74ea364019b22" dependencies = [ "base64 0.12.3", "charset", diff --git a/src/mimeparser.rs b/src/mimeparser.rs index d47089df4..488c1282c 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -1474,6 +1474,62 @@ mod tests { } } + #[async_std::test] + async fn test_mimeparser_fromheader() { + let ctx = TestContext::new_alice().await; + + let mimemsg = MimeMessage::from_bytes(&ctx, b"From: g@c.de\n\nhi") + .await + .unwrap(); + let contact = mimemsg.from.first().unwrap(); + assert_eq!(contact.addr, "g@c.de"); + assert_eq!(contact.display_name, None); + + let mimemsg = MimeMessage::from_bytes(&ctx, b"From: g@c.de \n\nhi") + .await + .unwrap(); + let contact = mimemsg.from.first().unwrap(); + assert_eq!(contact.addr, "g@c.de"); + assert_eq!(contact.display_name, None); + + let mimemsg = MimeMessage::from_bytes(&ctx, b"From: \n\nhi") + .await + .unwrap(); + let contact = mimemsg.from.first().unwrap(); + assert_eq!(contact.addr, "g@c.de"); + assert_eq!(contact.display_name, None); + + let mimemsg = MimeMessage::from_bytes(&ctx, b"From: Goetz C \n\nhi") + .await + .unwrap(); + let contact = mimemsg.from.first().unwrap(); + assert_eq!(contact.addr, "g@c.de"); + assert_eq!(contact.display_name, Some("Goetz C".to_string())); + + let mimemsg = MimeMessage::from_bytes(&ctx, b"From: \"Goetz C\" \n\nhi") + .await + .unwrap(); + let contact = mimemsg.from.first().unwrap(); + assert_eq!(contact.addr, "g@c.de"); + assert_eq!(contact.display_name, Some("Goetz C".to_string())); + + let mimemsg = + MimeMessage::from_bytes(&ctx, b"From: =?utf-8?q?G=C3=B6tz?= C \n\nhi") + .await + .unwrap(); + let contact = mimemsg.from.first().unwrap(); + assert_eq!(contact.addr, "g@c.de"); + assert_eq!(contact.display_name, Some("Götz C".to_string())); + + let mimemsg = + MimeMessage::from_bytes(&ctx, b"From: \"=?utf-8?q?G=C3=B6tz?= C\" \n\nhi") + .await + .unwrap(); + let contact = mimemsg.from.first().unwrap(); + assert_eq!(contact.addr, "g@c.de"); + assert_eq!(contact.display_name, Some("Götz C".to_string())); + } + #[async_std::test] async fn test_dc_mimeparser_crash() { let context = TestContext::new().await;