From f9b6e6395898787cd01b9360eb4ad03b0546eecc Mon Sep 17 00:00:00 2001 From: Juan Tejada Date: Mon, 28 Nov 2016 11:40:52 -0800 Subject: [PATCH] [local-sync] Support parsing 8bit encoded messages --- .../src/local-sync-worker/imap/fetch-messages-in-folder.js | 2 ++ packages/local-sync/src/message-processor/index.js | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/local-sync/src/local-sync-worker/imap/fetch-messages-in-folder.js b/packages/local-sync/src/local-sync-worker/imap/fetch-messages-in-folder.js index 40411774b..0e1cd4f64 100644 --- a/packages/local-sync/src/local-sync-worker/imap/fetch-messages-in-folder.js +++ b/packages/local-sync/src/local-sync-worker/imap/fetch-messages-in-folder.js @@ -210,6 +210,8 @@ class FetchMessagesInFolder { msg.body[mimetype] = QuotedPrintable.decode(msg.parts[id]); } else if (encoding.toLowerCase() === '7bit') { msg.body[mimetype] = utf7.decode(msg.parts[id]); + } else if (encoding.toLowerCase() === '8bit') { + msg.body[mimetype] = Buffer.from(msg.parts[id], 'utf8').toString(); } else if (encoding && ['ascii', 'utf8', 'utf16le', 'ucs2', 'base64', 'latin1', 'binary', 'hex'].includes(encoding.toLowerCase())) { msg.body[mimetype] = Buffer.from(msg.parts[id], encoding.toLowerCase()).toString(); } else { diff --git a/packages/local-sync/src/message-processor/index.js b/packages/local-sync/src/message-processor/index.js index 6fb558790..49ca432c9 100644 --- a/packages/local-sync/src/message-processor/index.js +++ b/packages/local-sync/src/message-processor/index.js @@ -15,7 +15,8 @@ function runPipeline({db, accountId, message, logger}) { return Promise.resolve(processed) .then((nextMessage) => { if (!nextMessage.body) { - throw new Error("processor did not resolve with a valid message object.") + logger.error({processed_message: nextMessage.toJSON()}, `Processor did not resolve with a valid message object.`) + throw new Error('Processor did not resolve with a valid message object.') } return Promise.resolve(nextMessage); })