6bbc61
diff -up evolution-data-server-3.8.5/camel/camel-imapx-server.c.imapx-body-header evolution-data-server-3.8.5/camel/camel-imapx-server.c
6bbc61
--- evolution-data-server-3.8.5/camel/camel-imapx-server.c.imapx-body-header	2014-01-16 15:04:31.962005652 +0100
6bbc61
+++ evolution-data-server-3.8.5/camel/camel-imapx-server.c	2014-01-16 15:06:59.258999410 +0100
6bbc61
@@ -1722,6 +1722,7 @@ imapx_untagged_fetch (CamelIMAPXServer *
6bbc61
                       GError **error)
6bbc61
 {
6bbc61
 	struct _fetch_info *finfo;
6bbc61
+	gboolean got_body_header;
6bbc61
 
6bbc61
 	g_return_val_if_fail (CAMEL_IS_IMAPX_SERVER (is), FALSE);
6bbc61
 	/* cancellable may be NULL */
6bbc61
@@ -1733,6 +1734,21 @@ imapx_untagged_fetch (CamelIMAPXServer *
6bbc61
 		return FALSE;
6bbc61
 	}
6bbc61
 
6bbc61
+	/* Some IMAP servers respond with BODY[HEADER] when
6bbc61
+	 * asked for RFC822.HEADER.  Treat them equivalently. */
6bbc61
+	got_body_header =
6bbc61
+		((finfo->got & FETCH_HEADER) == 0) &&
6bbc61
+		(finfo->header == NULL) &&
6bbc61
+		((finfo->got & FETCH_BODY) != 0) &&
6bbc61
+		(g_strcmp0 (finfo->section, "HEADER") == 0);
6bbc61
+
6bbc61
+	if (got_body_header) {
6bbc61
+		finfo->got |= FETCH_HEADER;
6bbc61
+		finfo->got &= ~FETCH_BODY;
6bbc61
+		finfo->header = finfo->body;
6bbc61
+		finfo->body = NULL;
6bbc61
+	}
6bbc61
+
6bbc61
 	if ((finfo->got & (FETCH_BODY | FETCH_UID)) == (FETCH_BODY | FETCH_UID)) {
6bbc61
 		CamelIMAPXJob *job;
6bbc61
 		GetMessageData *data;