[evolution-ews/gnome-40] I#150 - Mail: Message redirect sends also to original Cc/Bcc
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews/gnome-40] I#150 - Mail: Message redirect sends also to original Cc/Bcc
- Date: Mon, 26 Apr 2021 16:41:18 +0000 (UTC)
commit 45eae8a70f8c5f1b8cc1ea969402a15af2de6710
Author: Milan Crha <mcrha redhat com>
Date: Mon Apr 26 18:39:34 2021 +0200
I#150 - Mail: Message redirect sends also to original Cc/Bcc
Closes https://gitlab.gnome.org/GNOME/evolution-ews/-/issues/150
src/EWS/common/e-ews-camel-common.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
---
diff --git a/src/EWS/common/e-ews-camel-common.c b/src/EWS/common/e-ews-camel-common.c
index 3bd5a356..9bbe33b2 100644
--- a/src/EWS/common/e-ews-camel-common.c
+++ b/src/EWS/common/e-ews-camel-common.c
@@ -65,7 +65,8 @@ filter_recipients (CamelMimeMessage *message,
static void
write_recipients (ESoapMessage *msg,
const gchar *elem_name,
- GHashTable *recips)
+ GHashTable *recips,
+ gboolean is_resend)
{
GHashTableIter iter;
gpointer key, value;
@@ -74,7 +75,7 @@ write_recipients (ESoapMessage *msg,
g_return_if_fail (elem_name != NULL);
g_return_if_fail (recips != NULL);
- if (!g_hash_table_size (recips))
+ if (!is_resend && !g_hash_table_size (recips))
return;
e_soap_message_start_element (msg, elem_name, NULL, NULL);
@@ -89,6 +90,12 @@ write_recipients (ESoapMessage *msg,
e_soap_message_end_element (msg); /* elem_name */
}
+static gboolean
+is_any_address_filled (CamelInternetAddress *addrs)
+{
+ return addrs && camel_address_length (CAMEL_ADDRESS (addrs)) > 0;
+}
+
/* MAPI flags gleaned from windows header files */
#define MAPI_MSGFLAG_READ 0x01
#define MAPI_MSGFLAG_UNSENT 0x08
@@ -282,6 +289,11 @@ create_mime_message_cb (ESoapMessage *msg,
if (create_data->recipients) {
GHashTable *recip_to, *recip_cc, *recip_bcc;
+ gboolean is_resend;
+
+ is_resend = is_any_address_filled (camel_mime_message_get_recipients (create_data->message,
CAMEL_RECIPIENT_TYPE_RESENT_TO)) ||
+ is_any_address_filled (camel_mime_message_get_recipients (create_data->message,
CAMEL_RECIPIENT_TYPE_RESENT_CC)) ||
+ is_any_address_filled (camel_mime_message_get_recipients (create_data->message,
CAMEL_RECIPIENT_TYPE_RESENT_BCC));
recip_to = g_hash_table_new (camel_strcase_hash, camel_strcase_equal);
recip_cc = g_hash_table_new (camel_strcase_hash, camel_strcase_equal);
@@ -289,9 +301,9 @@ create_mime_message_cb (ESoapMessage *msg,
filter_recipients (create_data->message, create_data->recipients, recip_to, recip_cc,
recip_bcc);
- write_recipients (msg, "ToRecipients", recip_to);
- write_recipients (msg, "CcRecipients", recip_cc);
- write_recipients (msg, "BccRecipients", recip_bcc);
+ write_recipients (msg, "ToRecipients", recip_to, is_resend);
+ write_recipients (msg, "CcRecipients", recip_cc, is_resend);
+ write_recipients (msg, "BccRecipients", recip_bcc, is_resend);
g_hash_table_destroy (recip_to);
g_hash_table_destroy (recip_cc);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]