diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index a5b1149d2a..e37e0e359a 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -2078,7 +2078,7 @@ class Core { MessageHelper.MessageParts parts = helper.getMessageParts(); // Download attachment - parts.downloadAttachment(context, attachment); + parts.downloadAttachment(context, attachment, folder); if (attachment.size != null) EntityLog.log(context, "Operation attachment size=" + attachment.size); @@ -2137,7 +2137,7 @@ class Core { MessageHelper.MessageParts parts = helper.getMessageParts(); // Download attachment - parts.downloadAttachment(context, attachment); + parts.downloadAttachment(context, attachment, folder); if (attachment.size != null) EntityLog.log(context, "Operation attachment size=" + attachment.size); @@ -3386,7 +3386,7 @@ class Core { try { for (EntityAttachment attachment : parts.getAttachments()) if (attachment.subsequence == null) - parts.downloadAttachment(context, attachment); + parts.downloadAttachment(context, attachment, folder); } catch (Throwable ex) { Log.w(ex); } @@ -5155,7 +5155,7 @@ class Core { if (state.getNetworkState().isUnmetered() || (attachment.size != null && attachment.size < maxSize)) try { - parts.downloadAttachment(context, attachment); + parts.downloadAttachment(context, attachment, folder); if (stats != null && attachment.size != null) stats.attachments += attachment.size; } catch (Throwable ex) { diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 21dd654aab..5f80a1d718 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -8658,7 +8658,7 @@ public class FragmentMessages extends FragmentBase remote.sequence = index + 1; remote.id = db.attachment().insertAttachment(remote); try { - parts.downloadAttachment(context, index, remote); + parts.downloadAttachment(context, index, remote, null); } catch (Throwable ex) { Log.e(ex); } @@ -9369,7 +9369,7 @@ public class FragmentMessages extends FragmentBase Log.i("s/mime attachment=" + remote); try { - parts.downloadAttachment(context, index, remote); + parts.downloadAttachment(context, index, remote, null); } catch (Throwable ex) { Log.e(ex); } diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 1376d9a8ca..c1cb7ce2fb 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -3952,7 +3952,7 @@ public class MessageHelper { return null; } - void downloadAttachment(Context context, EntityAttachment local) throws IOException, MessagingException { + void downloadAttachment(Context context, EntityAttachment local, EntityFolder folder) throws IOException, MessagingException { List remotes = getAttachments(); // Some servers order attachments randomly @@ -4014,10 +4014,10 @@ public class MessageHelper { if (index < 0) throw new IllegalArgumentException("Attachment not found"); - downloadAttachment(context, index, local); + downloadAttachment(context, index, local, folder); } - void downloadAttachment(Context context, int index, EntityAttachment local) throws MessagingException, IOException { + void downloadAttachment(Context context, int index, EntityAttachment local, EntityFolder folder) throws MessagingException, IOException { Log.i("downloading attachment id=" + local.id + " index=" + index + " " + local); // Get data @@ -4075,20 +4075,22 @@ public class MessageHelper { throw ex; } - if ("message/rfc822".equals(local.type)) - decodeRfc822(context, local, 1); + if (folder == null || !EntityFolder.isOutgoing(folder.type)) { + if ("message/rfc822".equals(local.type)) + decodeRfc822(context, local, 1); - else if ("text/calendar".equals(local.type) && ActivityBilling.isPro(context)) - decodeICalendar(context, local); + else if ("text/calendar".equals(local.type) && ActivityBilling.isPro(context)) + decodeICalendar(context, local); - else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && local.isCompressed()) { - decodeCompressed(context, local, 1); + else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && local.isCompressed()) { + decodeCompressed(context, local, 1); - } else if (Helper.isTnef(local.type, local.name)) - decodeTNEF(context, local, 1); + } else if (Helper.isTnef(local.type, local.name)) + decodeTNEF(context, local, 1); - else if ("msg".equalsIgnoreCase(Helper.getExtension(local.name))) - decodeOutlook(context, local, 1); + else if ("msg".equalsIgnoreCase(Helper.getExtension(local.name))) + decodeOutlook(context, local, 1); + } } }