Handle providers without drafts folder

for example free.fr
This commit is contained in:
M66B
2018-08-03 14:41:31 +00:00
parent 8ac235791f
commit d32df01e25
3 changed files with 37 additions and 19 deletions

View File

@@ -64,6 +64,7 @@ import javax.mail.FetchProfile;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.FolderClosedException;
import javax.mail.FolderNotFoundException;
import javax.mail.Message;
import javax.mail.MessageRemovedException;
import javax.mail.MessagingException;
@@ -549,6 +550,10 @@ public class ServiceSynchronize extends LifecycleService {
lbm.unregisterReceiver(receiver);
Log.i(Helper.TAG, folder.name + " unlisten process id=" + folder.id);
}
} catch (FolderNotFoundException ex) {
Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
folder.synchronize = false;
DB.getInstance(this).folder().updateFolder(folder);
} finally {
if (ifolder != null && ifolder.isOpen()) {
try {
@@ -584,6 +589,12 @@ public class ServiceSynchronize extends LifecycleService {
imessage.setFlag(Flags.Flag.SEEN, jargs.getBoolean(0));
} else if (EntityOperation.ADD.equals(op.name)) {
if (!folder.synchronize) {
// Local drafts
Log.w(Helper.TAG, "Folder synchronization disabled");
return;
}
// Append message
EntityMessage msg = message.getMessage(op.message);
Properties props = MessageHelper.getSessionProperties();