diff options
author | Milan Crha <mcrha@redhat.com> | 2023-05-10 10:04:31 +0200 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2023-05-10 10:05:27 +0200 |
commit | cd4e1f4feb0b165acfe8d9a321aa25307529e88c (patch) | |
tree | 1373e7ab0ea9c4385687e46dfe5009a579e58b2e | |
parent | 7ce3a034ec6295d76a18922f3fc4e5e11739cd4e (diff) | |
download | evolution-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.c | 17 | ||||
-rw-r--r-- | src/mail/em-composer-utils.c | 12 |
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); |