下面列出了javax.mail.Folder#getMode ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static void GetNotes(Account account, Folder notesFolder, Context ctx, NotesDb storedNotes) throws MessagingException, IOException{
Long UIDM;
Message notesMessage;
File directory = new File (ctx.getFilesDir() + "/" + account.name);
if (notesFolder.isOpen()) {
if ((notesFolder.getMode() & Folder.READ_ONLY) != 0)
notesFolder.open(Folder.READ_ONLY);
} else {
notesFolder.open(Folder.READ_ONLY);
}
UIDValidity = GetUIDValidity(account, ctx);
SetUIDValidity(account, UIDValidity, ctx);
Message[] notesMessages = notesFolder.getMessages();
//Log.d(TAG,"number of messages in folder="+(notesMessages.length));
for(int index=notesMessages.length-1; index>=0; index--) {
notesMessage = notesMessages[index];
// write every message in files/{accountname} directory
// filename is the original message uid
UIDM=((IMAPFolder)notesFolder).getUID(notesMessage);
String suid = UIDM.toString();
File outfile = new File (directory, suid);
GetOneNote(outfile, notesMessage, storedNotes, account.name, suid, true);
}
}
public static void DeleteNote(Folder notesFolder, int numMessage) throws MessagingException, IOException {
notesFolder = store.getFolder(sfolder);
if (notesFolder.isOpen()) {
if ((notesFolder.getMode() & Folder.READ_WRITE) != 0)
notesFolder.open(Folder.READ_WRITE);
} else {
notesFolder.open(Folder.READ_WRITE);
}
//Log.d(TAG,"UID to remove:"+numMessage);
Message[] msgs = {((IMAPFolder)notesFolder).getMessageByUID(numMessage)};
notesFolder.setFlags(msgs, new Flags(Flags.Flag.DELETED), true);
((IMAPFolder)notesFolder).expunge(msgs);
}
private static void crawlFolders(Store store, Index index, Folder folder,
ExecutorService service) throws MessagingException {
if (folder != null) {
final String folderName = folder.getFullName();
index.addFolder(folderName);
if ((folder.getType() & Folder.HOLDS_MESSAGES) == Folder.HOLDS_MESSAGES) {
folder.open(Folder.READ_ONLY);
if (folder.getMode() != Folder.READ_ONLY) {
folder.expunge();
}
final int messageCount = folder.getMessageCount();
folder.close(false);
int pos = 1;
while (pos + MNIMAPSync.BATCH_SIZE <= messageCount) {
service.execute(new FolderCrawler(store, folderName, pos,
pos + MNIMAPSync.BATCH_SIZE, index));
pos = pos + MNIMAPSync.BATCH_SIZE;
}
service.execute(new FolderCrawler(store, folderName, pos, messageCount, index));
}
//Folder recursion. Get all children
if ((folder.getType() & Folder.HOLDS_FOLDERS) == Folder.HOLDS_FOLDERS) {
for (Folder child : folder.list()) {
crawlFolders(store, index, child, service);
}
}
}
}
public void run() {
long deleted = 0L;
long skipped = 0L;
try {
final Folder targetFolder = storeDeleter.getTargetStore().getFolder(targetFolderName);
//Opens a new connection per Thread
targetFolder.open(Folder.READ_WRITE);
final Message[] targetMessages = targetFolder.getMessages(start, end);
targetFolder.fetch(targetMessages, MessageId.addHeaders(new FetchProfile()));
for (Message message : targetMessages) {
try {
final MessageId id = new MessageId(message);
if (!sourceFolderMessages.contains(id)) {
message.setFlag(Flags.Flag.DELETED, true);
deleted++;
} else {
skipped++;
}
} catch (MessageId.MessageIdException ex) {
//Usually messages that ran into this exception are spammy, so we skip them.
skipped++;
}
}
//Close folder and expunge flagged messages
//Expunge only if folder is read write
if (targetFolder.getMode() == Folder.READ_ONLY) {
targetFolder.close(false);
} else {
targetFolder.close(expunge);
}
} catch (MessagingException messagingException) {
Logger.getLogger(Index.class.getName()).log(Level.SEVERE, null, messagingException);
}
storeDeleter.updatedMessagesDeletedCount(deleted);
storeDeleter.updateMessagesSkippedCount(skipped);
}
private void deleteTargetMessages(Folder targetFolder) throws MessagingException {
if (targetFolder != null) {
final String targetFolderName = targetFolder.getFullName();
final String sourceFolderName = targetToSourceFolderName(targetFolderName, sourceIndex, targetIndex);
if ((targetFolder.getType() & Folder.HOLDS_MESSAGES) == Folder.HOLDS_MESSAGES) {
targetFolder.open(Folder.READ_WRITE);
if (targetFolder.getMode() != Folder.READ_ONLY) {
targetFolder.expunge();
}
final int messageCount = targetFolder.getMessageCount();
targetFolder.close(false);
int pos = 1;
while (pos + MNIMAPSync.BATCH_SIZE <= messageCount) {
service.execute(
new MessageDeleter(this, targetFolderName, pos,
pos + MNIMAPSync.BATCH_SIZE, false, sourceIndex.
getFolderMessages(sourceFolderName)));
pos = pos + MNIMAPSync.BATCH_SIZE;
}
service.execute(new MessageDeleter(this, targetFolderName,
pos, messageCount, true, sourceIndex.getFolderMessages(sourceFolderName)));
}
//Folder recursion. Get all children
if ((targetFolder.getType() & Folder.HOLDS_FOLDERS) == Folder.HOLDS_FOLDERS) {
for (Folder child : targetFolder.list()) {
deleteTargetMessages(child);
}
}
}
}