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