From 64026fde7cc5ade188d89b1981405e3631b5f2ef Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Mon, 20 Jan 2020 22:54:26 +0300 Subject: [PATCH] Store main part of the message outside of "parts" vector --- src/mimefactory.rs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/mimefactory.rs b/src/mimefactory.rs index 446173ac6..39a72d86a 100644 --- a/src/mimefactory.rs +++ b/src/mimefactory.rs @@ -815,9 +815,10 @@ impl<'a, 'b> MimeFactory<'a, 'b> { ); // Message is sent as text/plain, with charset = utf-8 - let mut parts = vec![PartBuilder::new() + let main_part = PartBuilder::new() .content_type(&mime::TEXT_PLAIN_UTF_8) - .body(message_text)]; + .body(message_text); + let mut parts = Vec::new(); // add attachment part if chat::msgtype_has_file(self.msg.viewtype) { @@ -880,18 +881,18 @@ impl<'a, 'b> MimeFactory<'a, 'b> { } } - // Single part, render as regular message. - if parts.len() == 1 { - return Ok(parts.pop().unwrap()); + if parts.is_empty() { + // Single part, render as regular message. + Ok(main_part) + } else { + // Multiple parts, render as multipart. + let mut message = PartBuilder::new().message_type(MimeMultipartType::Mixed); + message = message.child(main_part.build()); + for part in parts.into_iter() { + message = message.child(part.build()); + } + Ok(message) } - - // Multiple parts, render as multipart. - let mut message = PartBuilder::new().message_type(MimeMultipartType::Mixed); - for part in parts.into_iter() { - message = message.child(part.build()); - } - - Ok(message) } /// Render an MDN