[evolution-mapi/gnome-3-26] Bug 793835 - HTML attachment overwrites message text or get removed
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-mapi/gnome-3-26] Bug 793835 - HTML attachment overwrites message text or get removed
- Date: Wed, 28 Feb 2018 11:31:29 +0000 (UTC)
commit 66d855b776fef0a5a89c37745a5b4be8fb33cf70
Author: Milan Crha <mcrha redhat com>
Date: Wed Feb 28 12:30:12 2018 +0100
Bug 793835 - HTML attachment overwrites message text or get removed
src/libexchangemapi/e-mapi-mail-utils.c | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
---
diff --git a/src/libexchangemapi/e-mapi-mail-utils.c b/src/libexchangemapi/e-mapi-mail-utils.c
index 961f3e7..96ae902 100644
--- a/src/libexchangemapi/e-mapi-mail-utils.c
+++ b/src/libexchangemapi/e-mapi-mail-utils.c
@@ -1171,6 +1171,24 @@ e_mapi_mail_content_stream_to_bin (CamelStream *content_stream,
*plpb = lpb;
}
+static gboolean
+e_mapi_mail_part_is_attachment (CamelMimePart *part)
+{
+ const CamelContentDisposition *content_disposition;
+
+ g_return_val_if_fail (CAMEL_IS_MIME_PART (part), FALSE);
+
+ content_disposition = camel_mime_part_get_content_disposition (part);
+
+ if (!content_disposition)
+ return FALSE;
+
+ return content_disposition &&
+ content_disposition->disposition && (
+ g_ascii_strcasecmp (content_disposition->disposition, "attachment") == 0 ||
+ g_ascii_strcasecmp (content_disposition->disposition, "inline") == 0);
+}
+
#define set_attach_value(pt,vl) { \
if (!e_mapi_utils_add_property (&attach->properties, pt, vl, attach)) { \
g_warning ("%s: Failed to set property 0x%x", G_STRFUNC, pt); \
@@ -1404,10 +1422,14 @@ e_mapi_mail_do_multipart (EMapiObject *object,
CamelStream *content_stream;
CamelContentType *type;
CamelMimePart *part;
+ gboolean parent_is_alternative;
gint nn, ii;
g_return_val_if_fail (is_first != NULL, FALSE);
+ type = camel_data_wrapper_get_mime_type_field (CAMEL_DATA_WRAPPER (mp));
+ parent_is_alternative = type && camel_content_type_is (type, "multipart", "alternative");
+
nn = camel_multipart_get_number (mp);
for (ii = 0; ii < nn; ii++) {
/* getting part */
@@ -1459,7 +1481,9 @@ e_mapi_mail_do_multipart (EMapiObject *object,
if (ii == 0 && (*is_first) && camel_content_type_is (type, "text", "plain")) {
e_mapi_mail_add_body (object, content_stream, PidTagBody, cancellable);
*is_first = FALSE;
- } else if (camel_content_type_is (type, "text", "html")) {
+ } else if ((ii == 0 || parent_is_alternative) &&
+ camel_content_type_is (type, "text", "html") &&
+ !e_mapi_mail_part_is_attachment (part)) {
e_mapi_mail_add_body (object, content_stream, PidTagHtml, cancellable);
} else {
e_mapi_mail_add_attach (object, part, content_stream, cancellable);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]