diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c
index 137fc38c3e66de826c37f16d5821761bcc1270fe..67c739826edf6a2c48a67949a6e116ace2d7a328 100644
--- a/src/lib-sieve/sieve-message.c
+++ b/src/lib-sieve/sieve-message.c
@@ -971,7 +971,9 @@ static void sieve_message_part_save
 
 	/* Extract text if requested */
 	result_buf = buf;
-	if ( extract_text ) {
+	if ( extract_text && body_part->children == NULL &&
+		!body_part->epilogue ) {
+
 		if ( mail_html2text_content_type_match
 			(body_part->content_type) ) {
 			struct mail_html2text *html2text;
@@ -1240,7 +1242,7 @@ static int sieve_message_parts_add_missing
 				/* Save headers for message/rfc822 part */
 				if ( header_part != NULL ) {
 					sieve_message_part_save
-						(renv, buf, header_part, extract_text);
+						(renv, buf, header_part, FALSE);
 					header_part = NULL;
 				}