Added option to show headers

This commit is contained in:
M66B
2018-09-05 07:23:51 +00:00
parent cfb68b904c
commit 49f7a61717
11 changed files with 1061 additions and 37 deletions

View File

@@ -66,6 +66,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -80,6 +81,7 @@ import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.FolderClosedException;
import javax.mail.FolderNotFoundException;
import javax.mail.Header;
import javax.mail.Message;
import javax.mail.MessageRemovedException;
import javax.mail.MessagingException;
@@ -841,7 +843,8 @@ public class ServiceSynchronize extends LifecycleService {
if (message.uid == null &&
(EntityOperation.SEEN.equals(op.name) ||
EntityOperation.DELETE.equals(op.name) ||
EntityOperation.MOVE.equals(op.name)))
EntityOperation.MOVE.equals(op.name) ||
EntityOperation.HEADERS.equals(op.name)))
throw new IllegalArgumentException(op.name + " without uid");
JSONArray jargs = new JSONArray(op.args);
@@ -864,6 +867,9 @@ public class ServiceSynchronize extends LifecycleService {
else if (EntityOperation.ATTACHMENT.equals(op.name))
doAttachment(folder, op, ifolder, message, jargs, db);
else if (EntityOperation.HEADERS.equals(op.name))
doHeaders(folder, ifolder, message, db);
else
throw new MessagingException("Unknown operation name=" + op.name);
@@ -1124,6 +1130,17 @@ public class ServiceSynchronize extends LifecycleService {
}
}
private void doHeaders(EntityFolder folder, IMAPFolder ifolder, EntityMessage message, DB db) throws MessagingException {
Message imessage = ifolder.getMessageByUID(message.uid);
Enumeration<Header> headers = imessage.getAllHeaders();
StringBuilder sb = new StringBuilder();
while (headers.hasMoreElements()) {
Header header = headers.nextElement();
sb.append(header.getName()).append(": ").append(header.getValue()).append("\n");
}
db.message().setMessageHeaders(message.id, sb.toString());
}
private void synchronizeFolders(EntityAccount account, IMAPStore istore, ServiceState state) throws MessagingException {
try {
Log.v(Helper.TAG, "Start sync folders");