summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2023-05-10 10:04:31 +0200
committerMilan Crha <mcrha@redhat.com>2023-05-10 10:05:27 +0200
commitcd4e1f4feb0b165acfe8d9a321aa25307529e88c (patch)
tree1373e7ab0ea9c4385687e46dfe5009a579e58b2e
parent7ce3a034ec6295d76a18922f3fc4e5e11739cd4e (diff)
downloadevolution-cd4e1f4feb0b165acfe8d9a321aa25307529e88c.tar.gz
I#2356 - PGP-MIME: Show decrypted protected header as Subject in preview
Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/2356
-rw-r--r--src/em-format/e-mail-parser-multipart-mixed.c17
-rw-r--r--src/mail/em-composer-utils.c12
2 files changed, 23 insertions, 6 deletions
diff --git a/src/em-format/e-mail-parser-multipart-mixed.c b/src/em-format/e-mail-parser-multipart-mixed.c
index 53c16d1511..19718a971a 100644
--- a/src/em-format/e-mail-parser-multipart-mixed.c
+++ b/src/em-format/e-mail-parser-multipart-mixed.c
@@ -48,6 +48,7 @@ empe_mp_mixed_maybe_update_message_info_headers (EMailParser *parser,
GCancellable *cancellable)
{
EMailPartList *part_list;
+ CamelMimeMessage *message;
CamelFolder *folder;
const gchar *message_uid;
@@ -65,6 +66,10 @@ empe_mp_mixed_maybe_update_message_info_headers (EMailParser *parser,
if (!part_list)
return;
+ message = e_mail_part_list_get_message (part_list);
+ if (message)
+ camel_mime_message_set_subject (message, subject);
+
folder = e_mail_part_list_get_folder (part_list);
message_uid = e_mail_part_list_get_message_uid (part_list);
@@ -185,8 +190,18 @@ empe_mp_mixed_parse (EMailParserExtension *extension,
/* The multipart/mixed contains some of the original headers */
subject = camel_medium_get_header (CAMEL_MEDIUM (part), "Subject");
- if (subject)
+ if (subject) {
+ gchar *tmp = NULL;
+
+ if (strchr (subject, '\n')) {
+ tmp = camel_header_unfold (subject);
+ subject = tmp;
+ }
+
empe_mp_mixed_maybe_update_message_info_headers (parser, part_id->str, subject, cancellable);
+
+ g_free (tmp);
+ }
}
ct = camel_mime_part_get_content_type (subpart);
diff --git a/src/mail/em-composer-utils.c b/src/mail/em-composer-utils.c
index b82cff6211..3f785762d2 100644
--- a/src/mail/em-composer-utils.c
+++ b/src/mail/em-composer-utils.c
@@ -2693,16 +2693,18 @@ forward_non_attached (EMsgComposer *composer,
forward subject, because both rely on that account. */
set_up_new_composer (composer, NULL, folder, message, uid, FALSE);
- subject = emcu_generate_forward_subject (composer, message, NULL);
- table = e_msg_composer_get_header_table (composer);
- e_composer_header_table_set_subject (table, subject);
- g_free (subject);
-
forward = quoting_text (QUOTING_FORWARD, composer);
text = em_utils_message_to_html_ex (session, message, forward, flags, NULL, NULL, NULL, &validity_found, &part_list);
e_msg_composer_add_attachments_from_part_list (composer, part_list, FALSE);
+ /* Read the Subject after EMFormatter, because it can update
+ it from an encrypted part */
+ subject = emcu_generate_forward_subject (composer, message, NULL);
+ table = e_msg_composer_get_header_table (composer);
+ e_composer_header_table_set_subject (table, subject);
+ g_free (subject);
+
if (text != NULL) {
e_msg_composer_set_body_text (composer, text, TRUE);