diff --git a/app/src/main/java/eu/faircode/email/AdapterAttachment.java b/app/src/main/java/eu/faircode/email/AdapterAttachment.java index cde3586745..17eb8a7a3d 100644 --- a/app/src/main/java/eu/faircode/email/AdapterAttachment.java +++ b/app/src/main/java/eu/faircode/email/AdapterAttachment.java @@ -375,13 +375,16 @@ public class AdapterAttachment extends RecyclerView.Adapter db.beginTransaction(); EntityMessage message = db.message().getMessage(mid); - if (message == null || message.uid == null) + if (message == null) return null; EntityAccount account = db.account().getAccount(message.account); if (account == null) return null; + if (account.protocol == EntityAccount.TYPE_IMAP && message.uid == null) + return null; + if (!"connected".equals(account.state) && !account.isTransient(context)) reload = account.id; diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index d3e3bec4ce..e6361e4bd5 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -4984,7 +4984,14 @@ public class AdapterMessage extends RecyclerView.Adapter map = findMessages(context, folder, Arrays.asList(message), istore, ifolder); + if (map.size() == 0) + throw new MessageRemovedException("Message not found"); + + MessageHelper helper = new MessageHelper((MimeMessage) map.entrySet().iterator().next().getValue(), context); + MessageHelper.MessageParts parts = helper.getMessageParts(); + + // Download attachment + parts.downloadAttachment(context, attachment); + + if (attachment.size != null) + EntityLog.log(context, "Operation attachment size=" + attachment.size); + } + private static void onExists(Context context, JSONArray jargs, EntityAccount account, EntityFolder folder, EntityMessage message) { // POP3 EntityContact.received(context, account, folder, message); @@ -3357,9 +3390,13 @@ class Core { message.preview, parts.getWarnings(message.warning)); - for (EntityAttachment attachment : parts.getAttachments()) - if (attachment.subsequence == null) - parts.downloadAttachment(context, attachment); + try { + for (EntityAttachment attachment : parts.getAttachments()) + if (attachment.subsequence == null) + parts.downloadAttachment(context, attachment); + } catch (Throwable ex) { + Log.w(ex); + } if (download_eml) try {