From 241a9c5990256102e11d537cb5ab2d71ca109640 Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Mon, 23 Nov 2020 01:06:41 +0300 Subject: [PATCH] Drop incoming vCards Otherwise they show up as attachments in the chat. --- src/mimeparser.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 07aa0c34d..0a8404407 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -814,6 +814,15 @@ impl MimeMessage { return; } } + + if mime_type.type_() == "text/x-vcard" + || mime_type.type_() == "text/vcard" + || filename.ends_with(".vcf") + || filename.ends_with(".vcard") + { + return; + } + /* we have a regular file attachment, write decoded data to new blob object */ @@ -1632,6 +1641,22 @@ mod tests { assert_eq!(mimeparser.group_avatar, None); } + #[async_std::test] + async fn test_mimeparser_with_vcard() { + let t = TestContext::new().await; + + let raw = include_bytes!("../test-data/message/vcard.eml"); + let mimeparser = MimeMessage::from_bytes(&t.ctx, &raw[..]).await.unwrap(); + assert_eq!(mimeparser.parts.len(), 1); + assert_eq!(mimeparser.parts[0].typ, Viewtype::Text); + assert_eq!( + mimeparser.parts[0].msg, + "vCard example – An example of vCard sent from Thunderbird." + ); + assert_eq!(mimeparser.user_avatar, None); + assert_eq!(mimeparser.group_avatar, None); + } + #[async_std::test] async fn test_mimeparser_message_kml() { let context = TestContext::new().await;