Workaround Javamail encoding bug

This commit is contained in:
M66B 2019-07-05 20:12:12 +02:00
parent f01235ba01
commit 178c885183
1 changed files with 11 additions and 1 deletions

View File

@ -815,13 +815,23 @@ public class MessageHelper {
try {
ContentType ct = new ContentType(part.getContentType());
String charset = ct.getParameter("charset");
String encoding = null;
try {
String[] enc = part.getHeader("Content-Transfer-Encoding");
if (enc != null && enc.length > 0)
encoding = enc[0];
} catch (MessagingException ex) {
Log.w(ex);
}
if (TextUtils.isEmpty(charset)) {
if (BuildConfig.DEBUG)
warnings.add(context.getString(R.string.title_no_charset, ct));
// The first 127 characters are the same as in US-ASCII
result = new String(result.getBytes(StandardCharsets.ISO_8859_1));
} else {
if ("US-ASCII".equals(charset.toUpperCase()) || "ISO-8859-1".equals(charset.toUpperCase()))
if ("US-ASCII".equals(charset.toUpperCase()) ||
(encoding != null && "8bit".equals(encoding.toLowerCase()) &&
"ISO-8859-1".equals(charset.toUpperCase())))
result = new String(result.getBytes(StandardCharsets.ISO_8859_1));
else {
if ("US-ASCII".equals(Charset.forName(charset).name()))