From d85738286df3b43872ea224b5807965522eecdbd Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 28 Feb 2019 20:26:49 +0000 Subject: [PATCH] Attempt to workaround "Unable to load BODYSTRUCTURE" --- .../java/eu/faircode/email/MessageHelper.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index a4ce0ebfc9..0a036c1446 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -752,7 +752,25 @@ public class MessageHelper { MessageParts getMessageParts() throws IOException, FolderClosedException { MessageParts parts = new MessageParts(); - getMessageParts(imessage, parts, false); // Can throw ParseException + + MimeMessage cmessage = imessage; + try { + // Load body structure + cmessage.getContentID(); + } catch (MessagingException ex) { + // https://javaee.github.io/javamail/FAQ#imapserverbug + if ("Unable to load BODYSTRUCTURE".equals(ex.getMessage())) { + Log.w(ex); + parts.warnings.add(Helper.formatThrowable(ex)); + try { + cmessage = new MimeMessage(imessage); + } catch (MessagingException ignored) { + } + } + } + + getMessageParts(cmessage, parts, false); + return parts; } @@ -771,6 +789,7 @@ public class MessageHelper { // Nested body: try to continue // ParseException: In parameter list boundary="...">, expected parameter name, got ";" Log.w(ex); + parts.warnings.add(Helper.formatThrowable(ex)); } } else { // https://www.iana.org/assignments/cont-disp/cont-disp.xhtml @@ -779,6 +798,7 @@ public class MessageHelper { disposition = part.getDisposition(); } catch (MessagingException ex) { Log.w(ex); + parts.warnings.add(Helper.formatThrowable(ex)); disposition = null; } @@ -787,6 +807,7 @@ public class MessageHelper { filename = part.getFileName(); } catch (MessagingException ex) { Log.w(ex); + parts.warnings.add(Helper.formatThrowable(ex)); filename = null; }