From f2dae6438accb26934621530bfae2680b14071e0 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 5 Sep 2018 07:57:34 +0000 Subject: [PATCH] Guess better content type --- .../java/eu/faircode/email/MessageHelper.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index c50c55e252..5d8a823c3e 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -25,6 +25,7 @@ import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.Base64; import android.util.Log; +import android.webkit.MimeTypeMap; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -397,8 +398,23 @@ public class MessageHelper { attachment.type = ct.getBaseType(); attachment.size = part.getSize(); attachment.part = part; + + // Try to guess a better content type + // Sometimes PDF files are sent using the wrong type + if ("application/octet-stream".equals(attachment.type) && attachment.name != null) { + String extension = MimeTypeMap.getFileExtensionFromUrl(attachment.name.toLowerCase()); + if (extension != null) { + String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); + if (type != null) { + Log.w(Helper.TAG, "Guessing file=" + attachment.name + " type=" + type); + attachment.type = type; + } + } + } + if (attachment.size < 0) attachment.size = null; + result.add(attachment); } } else if (content instanceof Multipart) {