Silently ignore broken messages

This commit is contained in:
M66B 2018-09-06 07:16:33 +00:00
parent 17c37807bd
commit 96df682541
3 changed files with 33 additions and 38 deletions

View File

@ -161,11 +161,14 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback<TupleMe
int index = imessages.length - 1; int index = imessages.length - 1;
while (index >= 0) { while (index >= 0) {
if (imessages[index].getReceivedDate().getTime() < before) { if (imessages[index].getReceivedDate().getTime() < before)
Log.i(Helper.TAG, "Boundary sync uid=" + ifolder.getUID(imessages[index])); try {
ServiceSynchronize.synchronizeMessage(context, folder, ifolder, (IMAPMessage) imessages[index], true); Log.i(Helper.TAG, "Boundary sync uid=" + ifolder.getUID(imessages[index]));
break; ServiceSynchronize.synchronizeMessage(context, folder, ifolder, (IMAPMessage) imessages[index], true);
} break;
} catch (Throwable ex) {
Log.e(Helper.TAG, "Boundary " + ex + "\n" + Log.getStackTraceString(ex));
}
index--; index--;
} }

View File

@ -309,40 +309,28 @@ public class MessageHelper {
if (part.isMimeType("multipart/alternative")) { if (part.isMimeType("multipart/alternative")) {
String text = null; String text = null;
try { Multipart mp = (Multipart) part.getContent();
Multipart mp = (Multipart) part.getContent(); for (int i = 0; i < mp.getCount(); i++) {
for (int i = 0; i < mp.getCount(); i++) { Part bp = mp.getBodyPart(i);
Part bp = mp.getBodyPart(i); if (bp.isMimeType("text/plain")) {
if (bp.isMimeType("text/plain")) { if (text == null)
if (text == null) text = getHtml(bp);
text = getHtml(bp); } else if (bp.isMimeType("text/html")) {
} else if (bp.isMimeType("text/html")) { String s = getHtml(bp);
String s = getHtml(bp); if (s != null)
if (s != null) return s;
return s; } else
} else return getHtml(bp);
return getHtml(bp);
}
} catch (UnsupportedEncodingException ex) {
throw ex;
} catch (IOException ex) {
Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
} }
return text; return text;
} }
if (part.isMimeType("multipart/*")) { if (part.isMimeType("multipart/*")) {
try { Multipart mp = (Multipart) part.getContent();
Multipart mp = (Multipart) part.getContent(); for (int i = 0; i < mp.getCount(); i++) {
for (int i = 0; i < mp.getCount(); i++) { String s = getHtml(mp.getBodyPart(i));
String s = getHtml(mp.getBodyPart(i)); if (s != null)
if (s != null) return s;
return s;
}
} catch (UnsupportedEncodingException ex) {
throw ex;
} catch (IOException ex) {
Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
} }
} }
@ -381,6 +369,7 @@ public class MessageHelper {
try { try {
disposition = part.getDisposition(); disposition = part.getDisposition();
} catch (MessagingException ex) { } catch (MessagingException ex) {
Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
disposition = null; disposition = null;
} }
@ -388,6 +377,7 @@ public class MessageHelper {
try { try {
filename = part.getFileName(); filename = part.getFileName();
} catch (MessagingException ex) { } catch (MessagingException ex) {
Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
filename = null; filename = null;
} }

View File

@ -104,7 +104,6 @@ import javax.mail.event.StoreEvent;
import javax.mail.event.StoreListener; import javax.mail.event.StoreListener;
import javax.mail.internet.InternetAddress; import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import javax.mail.internet.ParseException;
import javax.mail.search.ComparisonTerm; import javax.mail.search.ComparisonTerm;
import javax.mail.search.ReceivedDateTerm; import javax.mail.search.ReceivedDateTerm;
import javax.net.ssl.SSLException; import javax.net.ssl.SSLException;
@ -522,6 +521,8 @@ public class ServiceSynchronize extends LifecycleService {
synchronizeMessage(ServiceSynchronize.this, folder, ifolder, (IMAPMessage) imessage, false); synchronizeMessage(ServiceSynchronize.this, folder, ifolder, (IMAPMessage) imessage, false);
} catch (MessageRemovedException ex) { } catch (MessageRemovedException ex) {
Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
} catch (Throwable ex) {
Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
} }
EntityOperation.process(ServiceSynchronize.this); // download small attachments EntityOperation.process(ServiceSynchronize.this); // download small attachments
} catch (Throwable ex) { } catch (Throwable ex) {
@ -584,6 +585,8 @@ public class ServiceSynchronize extends LifecycleService {
EntityOperation.process(ServiceSynchronize.this); // download small attachments EntityOperation.process(ServiceSynchronize.this); // download small attachments
} catch (MessageRemovedException ex) { } catch (MessageRemovedException ex) {
Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
} catch (Throwable ex) {
Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
} }
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
@ -1281,11 +1284,10 @@ public class ServiceSynchronize extends LifecycleService {
updated++; updated++;
else else
unchanged++; unchanged++;
} catch (ParseException ex) {
Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
reportError(account.name, folder.name, ex);
} catch (MessageRemovedException ex) { } catch (MessageRemovedException ex) {
Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
} catch (Throwable ex) {
Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
} }
EntityOperation.process(this); // download small attachments EntityOperation.process(this); // download small attachments