From 5a7aa45629eb2e392c8b58ec0fae81e263b4c3f0 Mon Sep 17 00:00:00 2001 From: Halla Moore Date: Fri, 16 Dec 2016 10:42:28 -0800 Subject: [PATCH] [local-sync] Fix a couple of message parsing bugs Summary: - Don't fail if there's no subject, just set it to `(no subject)` - Support "BINARY" content-transfer-encoding. (This really means that there is no encoding, so it's simple to add support for it) Test Plan: tested locally Reviewers: jackie Reviewed By: jackie Differential Revision: https://phab.nylas.com/D3528 --- packages/local-sync/src/shared/message-factory.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/local-sync/src/shared/message-factory.js b/packages/local-sync/src/shared/message-factory.js index 0c93f3819..96ecd69a4 100644 --- a/packages/local-sync/src/shared/message-factory.js +++ b/packages/local-sync/src/shared/message-factory.js @@ -112,7 +112,7 @@ async function parseFromImap(imapMessage, desiredParts, {db, accountId, folder}) const body = {} for (const {id, mimetype, transferEncoding, charset} of desiredParts) { // see https://www.w3.org/Protocols/rfc1341/5_Content-Transfer-Encoding.html - if (!transferEncoding || new Set(['7bit', '8bit']).has(transferEncoding.toLowerCase())) { + if (!transferEncoding || new Set(['7bit', '8bit', 'binary']).has(transferEncoding.toLowerCase())) { // NO transfer encoding has been performed --- how to decode to a string // depends ONLY on the charset, which defaults to 'ascii' according to // https://tools.ietf.org/html/rfc2045#section-5.2 @@ -152,7 +152,7 @@ async function parseFromImap(imapMessage, desiredParts, {db, accountId, folder}) headers: parsedHeaders, headerMessageId: parsedHeaders['message-id'] ? parsedHeaders['message-id'][0] : '', gMsgId: parsedHeaders['x-gm-msgid'], - subject: parsedHeaders.subject[0], + subject: parsedHeaders.subject ? parsedHeaders.subject[0] : '(no subject)', } parsedMessage.id = Message.hash(parsedMessage)