diff --git a/src/mimeparser.rs b/src/mimeparser.rs index eddbf6f07..364b433ef 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -748,7 +748,7 @@ impl MimeMessage { (simplified_txt, top_quote) }; - if !simplified_txt.is_empty() { + if !simplified_txt.is_empty() || simplified_quote.is_some() { let mut part = Part::default(); part.typ = Viewtype::Text; part.mimetype = Some(mime_type); @@ -2169,4 +2169,36 @@ Reply ); assert_eq!(message.parts[0].msg, "Reply"); } + + #[async_std::test] + async fn parse_quote_without_reply() { + let context = TestContext::new().await; + let raw = br##"Content-Type: text/plain; charset=utf-8; format=flowed; delsp=no +Subject: Re: swipe-to-reply +MIME-Version: 1.0 +In-Reply-To: +Date: Tue, 06 Oct 2020 00:00:00 +0000 +Message-ID: +To: bob +From: alice + +> Just a quote. +"##; + + let message = MimeMessage::from_bytes(&context.ctx, &raw[..]) + .await + .unwrap(); + assert_eq!( + message.get_subject(), + Some("Re: swipe-to-reply".to_string()) + ); + + assert_eq!(message.parts.len(), 1); + assert_eq!(message.parts[0].typ, Viewtype::Text); + assert_eq!( + message.parts[0].param.get(Param::Quote).unwrap(), + "Just a quote." + ); + assert_eq!(message.parts[0].msg, ""); + } } diff --git a/src/simplify.rs b/src/simplify.rs index bad465b50..7f07a0c8a 100644 --- a/src/simplify.rs +++ b/src/simplify.rs @@ -71,10 +71,9 @@ pub fn simplify(mut input: String, is_chat_message: bool) -> (String, bool, Opti let lines = split_lines(&input); let (lines, is_forwarded) = skip_forward_header(&lines); - let original_lines = &lines; - - let lines = remove_message_footer(lines); let (lines, top_quote) = remove_top_quote(lines); + let original_lines = &lines; + let lines = remove_message_footer(lines); let text = if is_chat_message { render_message(lines, false)