diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 73b2f36bd2..5f51ee9723 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -535,6 +535,7 @@ public class MessageHelper { private Part plain = null; private Part html = null; private List attachments = new ArrayList<>(); + private List warnings = new ArrayList<>(); String getHtml() throws MessagingException { if (plain == null && html == null) @@ -559,6 +560,16 @@ public class MessageHelper { result = ex + "\n" + android.util.Log.getStackTraceString(ex); } + ContentType ct = new ContentType(part.getContentType()); + String charset = ct.getParameter("charset"); + if (TextUtils.isEmpty(charset)) + warnings.add("Missing charset"); + else { + if ("US-ASCII".equals(Charset.forName(charset).name()) && + !"US-ASCII".equals(charset.toUpperCase())) + warnings.add("Unknown charset " + charset); + } + if (part.isMimeType("text/plain") || text) result = "
" + result.replaceAll("\\r?\\n", "
") + "
"; @@ -666,6 +677,13 @@ public class MessageHelper { os.close(); } } + + String getWarnings() { + if (warnings.size() == 0) + return null; + else + return TextUtils.join(", ", warnings); + } } private class AttachmentPart { diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 31baa75f3d..4cfec61ad6 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -2628,6 +2628,9 @@ public class ServiceSynchronize extends LifecycleService { String body = parts.getHtml(); message.write(context, body); db.message().setMessageContent(message.id, true, HtmlHelper.getPreview(body)); + String warnings = parts.getWarnings(); + if (warnings != null) + db.message().setMessageError(message.id, warnings); Log.i(folder.name + " downloaded message id=" + message.id + " size=" + message.size); }