nsIMsgFolder

The nsIMsgFolder interface is used to interact with folders in Thunderbird. This page is out of date. Check //github.com/RealityRipple/UXP/blob/master/mailnews/base/public/nsIMsgFolder.idl for the newer methods (esp. isSpecialFolder and such).

Inherits from: nsISupports

Method overview

void startFolderLoading();
void endFolderLoading();
void updateFolder(in nsIMsgWindow aWindow);
nsIMsgFilterList getFilterList(in nsIMsgWindow msgWindow);
void setFilterList(in nsIMsgFilterList filterList);
void ForceDBClosed();
void Delete();
void deleteSubFolders(in nsISupportsArray folders, in nsIMsgWindow msgWindow);
void propagateDelete(in nsIMsgFolder folder, in boolean deleteStorage,in nsIMsgWindow msgWindow);
void recursiveDelete(in boolean deleteStorage, in nsIMsgWindow msgWindow);
void createSubfolder(in AString folderName, in nsIMsgWindow msgWindow);
nsIMsgFolder addSubfolder(in AString folderName);
void createStorageIfMissing(in nsIUrlListener urlListener);
void compact(in nsIUrlListener aListener, in nsIMsgWindow aMsgWindow);
void compactAll(in nsIUrlListener aListener, innsIMsgWindow aMsgWindow,in nsISupportsArray aFolderArray, in boolean aCompactOfflineAlso,in nsISupportsArray aOfflineFolderArray);
void compactAllOfflineStores(in nsIMsgWindow aMsgWindow,in nsISupportsArray aOfflineFolderArray);
void emptyTrash(in nsIMsgWindow aMsgWindow, in nsIUrlListener aListener);
void rename(in AString name, in nsIMsgWindow msgWindow);
void renameSubFolders( in nsIMsgWindow msgWindow, in nsIMsgFolder oldFolder);
AString generateUniqueSubfolderName(in AString prefix,in nsIMsgFolder otherFolder);
void updateSummaryTotals(in boolean force);
void summaryChanged();
long getNumUnread(in boolean deep);
long getTotalMessages(in boolean deep);
void clearNewMessages();
void clearRequiresCleanup();
void setFlag(in unsigned long flag);
void clearFlag(in unsigned long flag);
boolean getFlag(in unsigned long flag);
void toggleFlag(in unsigned long flag);
void onFlagChange(in unsigned long flag);
void setPrefFlag();
nsIMsgFolder getFoldersWithFlag(in unsigned long flags, in unsigned long resultsize, out unsigned long numFolders);
nsISupportsArray getAllFoldersWithFlag(in unsigned long aFlag);
void getExpansionArray(in nsISupportsArray expansionArray);
ACString getUriForMsg(in nsIMsgDBHdr msgHdr);
void deleteMessages(in nsISupportsArray messages,in nsIMsgWindow msgWindow, in boolean deleteStorage, in boolean isMove, in nsIMsgCopyServiceListener listener, in boolean allowUndo);
void copyMessages(in nsIMsgFolder srcFolder, in nsISupportsArray messages,in boolean isMove, in nsIMsgWindow msgWindow,in nsIMsgCopyServiceListener listener, in boolean isFolder, in boolean allowUndo);
void copyFolder(in nsIMsgFolder srcFolder, in boolean isMoveFolder,in nsIMsgWindow msgWindow, in nsIMsgCopyServiceListener listener );
void copyFileMessage(in nsIFile file, in nsIMsgDBHdr msgToReplace,in boolean isDraft, in unsigned long newMsgFlags,in nsIMsgWindow msgWindow,in nsIMsgCopyServiceListener listener);
void acquireSemaphore(in nsISupports semHolder);
void releaseSemaphore(in nsISupports semHolder);
boolean testSemaphore(in nsISupports semHolder);
void getNewMessages(in nsIMsgWindow aWindow, in nsIUrlListener aListener);
void writeToFolderCache(in nsIMsgFolderCache folderCache, in boolean deep);
long getNumNewMessages(in boolean deep);
void setNumNewMessages(in long numNewMessages);
ACString generateMessageURI(in nsMsgKey msgKey);
void addMessageDispositionState(in nsIMsgDBHdr aMessage,in nsMsgDispositionState aDispositionFlag);
void markMessagesRead(in nsISupportsArray messages, in boolean markRead);
void markAllMessagesRead();
void markMessagesFlagged(in nsISupportsArray messages, in boolean markFlagged);
void markThreadRead(in nsIMsgThread thread);
void setLabelForMessages(in nsISupportsArray messages, in nsMsgLabelValue label);
nsIMsgDatabase getMsgDatabase(in nsIMsgWindow msgWindow);
void setMsgDatabase(in nsIMsgDatabase msgDatabase);
nsIMsgDatabase getDBFolderInfoAndDB(out nsIDBFolderInfo folderInfo);
nsIMsgDBHdr GetMessageHeader(in nsMsgKey msgKey);
boolean shouldStoreMsgOffline(in nsMsgKey msgKey);
boolean hasMsgOffline(in nsMsgKey msgKey);
nsIInputStream getOfflineFileStream(in nsMsgKey msgKey, out PRUint32 offset, out PRUint32 size);
void DownloadMessagesForOffline(in nsISupportsArray messages, in nsIMsgWindow window);
nsIMsgFolder getChildWithURI(in ACString uri, in boolean deep, in boolean caseInsensitive);
void downloadAllForOffline(in nsIUrlListener listener, in nsIMsgWindow window);
void enableNotifications(in long notificationType, in boolean enable, in boolean dbBatching);
boolean isCommandEnabled(in ACString command);
boolean matchOrChangeFilterDestination(in nsIMsgFolder folder,in boolean caseInsensitive);
boolean confirmFolderDeletionForFilter(in nsIMsgWindow msgWindow);
void alertFilterChanged(in nsIMsgWindow msgWindow);
void throwAlertMsg(in string msgName, in nsIMsgWindow msgWindow);
AString getStringWithFolderNameFromBundle(in string msgName);
void notifyCompactCompleted();
long compareSortKeys(in nsIMsgFolder msgFolder);
[noscript] void getSortKey(out octet_ptr key, out unsigned long length);
boolean callFilterPlugins(in nsIMsgWindow aMsgWindow);
ACString getStringProperty(in string propertyName);
void setStringProperty(in string propertyName, in ACString propertyValue);
boolean isAncestorOf(in nsIMsgFolder folder);
boolean containsChildNamed(in AString name);
nsIMsgFolder getChildNamed(in AString aName);
nsIMsgFolder findSubFolder(in ACString escapedSubFolderName);
void AddFolderListener(in nsIFolderListener listener);
void RemoveFolderListener(in nsIFolderListener listener);
void NotifyPropertyChanged(in nsIAtom property, in ACString oldValue, in ACString newValue);
void NotifyIntPropertyChanged(in nsIAtom property, in long oldValue, in long newValue);
void NotifyBoolPropertyChanged(in nsIAtom property, in boolean oldValue, in boolean newValue);
void NotifyPropertyFlagChanged(in nsIMsgDBHdr item, in nsIAtom property, in unsigned long oldValue, in unsigned long newValue);
void NotifyUnicharPropertyChanged(in nsIAtom property, in AString oldValue, in AString newValue);
void NotifyItemAdded(in nsISupports item);
void NotifyItemRemoved(in nsISupports item);
void NotifyFolderEvent(in nsIAtom event);
void ListDescendents(in nsISupportsArray descendents);
void Shutdown(in boolean shutdownChildren);
void setInVFEditSearchScope(in boolean aSearchThisFolder, in boolean aSetOnSubFolders);
void copyDataToOutputStreamForAppend(in nsIInputStream aIStream, in long aLength, in nsIOutputStream outputStream);
void copyDataDone();
void setJunkScoreForMessages(in nsISupportsArray aMessages, in ACString aJunkScore);
void applyRetentionSettings();
boolean fetchMsgPreviewText([array, size_is (aNumKeys)] in nsMsgKey aKeysToFetch, in unsigned long aNumKeys, in boolean aLocalOnly, in nsIUrlListener aUrlListener);
void addKeywordsToMessages(in nsISupportsArray aMessages, in ACString aKeywords);
void removeKeywordsFromMessages(in nsISupportsArray aMessages, in ACString aKeywords);
AUTF8String getMsgTextFromStream(in nsIMsgDBHdr aMsgHdr, in nsIInputStream aStream, in long aBytesToRead, in long aMaxOutputLen, in boolean aCompressQuotes);

Attributes

Attribute Type Description
supportsOffline boolean readonly
offlineStoreOutputStream nsIOutputStream readonly
offlineStoreInputStream nsIInputStream readonly
retentionSettings nsIMsgRetentionSettings
downloadSettings nsIMsgDownloadSettings
sortOrder long Used for order in the folder pane, folder pickers, etc.
lastMessageLoaded nsMsgKey

Unique ID to the folder, it is not a globally unique identifier. Will return nsMsgKey_None if there was no last message loaded.

Note: Does not persist across sessions.
URI ACString Readonly: Old nsIFolder properties and methods.
name AString Old nsIFolder properties and methods.
prettyName AString Old nsIFolder properties and methods.
abbreviatedName AString Readonly: Old nsIFolder properties and methods.
parent nsIMsgFolder Old nsIFolder properties and methods.
parentMsgFolder nsIMsgFolder Readonly: Handy accessor when we want a msg folder.
dBTransferInfo nsIDBFolderInfo
subFolders nsISimpleEnumerator Readonly: Returns an enumerator containing a list of nsIMsgFolder items that are subfolders of the instance this is called on.
hasSubFolders boolean Readonly: Returns true if this folder has sub folders.
messages nsISimpleEnumerator Readonly: Returns a list of Components.interfaces.nsIMsgDBHdr.
numSubFolders unsigned long Readonly: Returns the number of sub folders that this folder has.
inVFEditSearchScope boolean readonly
customIdentity nsIMsgIdentity Readonly: This allows a folder to have a special identity. E.g., you might want to associate an identity with a particular newsgroup, or for IMAP shared folders in the other users namespace, you might want to create a delegated identity.
gettingNewMessages boolean Are we running a url as a result of the user clicking get msg.
filePath nsILocalFile Local path of this folder.
baseMessageURI ACString readonly
charset ACString The charset of this folder.
charsetOverride boolean
biffState unsigned long
locked boolean readonly
flags unsigned long Direct access to the set/get all the flags at once.
knowsSearchNntpExtension boolean readonly
allowsPosting boolean readonly
relativePathName ACString readonly
sizeOnDisk unsigned long Size of this folder on disk (not including .msf file) for IMAP, it's the sum of the size of the messages.
username ACString readonly
hostname ACString readonly
expungedBytes unsigned long readonly
deletable boolean Readonly: Can this folder be deleted. For example, special folders cannot be deleted.
displayRecipients boolean Readonly: Should we be displaying recipients instead of the sender. For example, in the Sent folder, recipients are more relevant than the sender.
manyHeadersToDownload boolean Readonly: Used to determine if it will take a long time to download all the headers in this folder - so that we can do folder notifications synchronously instead of asynchronously.
requiresCleanup boolean readonly
hasNewMessages boolean Does this folder have new messages.
firstNewMessage nsIMsgDBHdr Readonly: The first new message in the folder.
prettiestName AString readonly
folderURL ACString Readonly: URL for this folder.
showDeletedMessages boolean readonly
server nsIMsgIncomingServer Readonly: This folder's parent server.
isServer boolean Readonly: Is this folder the "phantom" server folder?
canSubscribe boolean readonly
canFileMessages boolean readonly
noSelect boolean readonly: this is an imap no select folder
imapShared boolean readonly: this is an imap shared folder
canDeleteMessages boolean readonly: can't delete from imap read-only
canCreateSubfolders boolean Readonly: Does this folder allow subfolders. For example, newsgroups cannot have subfolders, and the INBOX on some IMAP servers cannot have subfolders.
canRename boolean Readonly: Can you change the name of this folder. For example, newsgroups and some special folders can't be renamed.
canCompact boolean readonly:
rootFolder nsIMsgFolder Readonly: The phantom server folder.

Constants

Constant Value Description
nsMsgBiffState_NewMail 0 User has new mail waiting.
nsMsgBiffState_NoMail 1 No new mail is waiting.
nsMsgBiffState_Unknown 2 We dunno whether there is new mail.
nsMsgDispositionState_None -1
nsMsgDispositionState_Replied 0
nsMsgDispositionState_Forwarded 1
allMessageCountNotifications 0 Turn notifications on/off for various notification types. Currently only supporting allMessageCountNotifications which refers to both total and unread message counts.

Methods

startFolderLoading()

 void startFolderLoading();

endFolderLoading()

 void endFolderLoading();

updateFolder()

Get new headers for the database.

 void updateFolder(nsIMsgWindow aWindow);

getFilterList()

Get the filter list on folder's server (or in the case of news, the filter list for this newsgroup).

 nsIMsgFilterList getFilterList(nsIMsgWindow msgWindow);

setFilterList()

 void setFilterList(in nsIMsgFilterList filterList);

ForceDBClosed()

 void ForceDBClosed();

Delete()

 void Delete();

deleteSubFolders()

 void deleteSubFolders(in nsISupportsArray folders,
                       in nsIMsgWindow msgWindow);

propagateDelete()

 void propagateDelete(in nsIMsgFolder folder,
                      in boolean deleteStorage,
                      in nsIMsgWindow msgWindow);

recursiveDelete()

 void recursiveDelete(in boolean deleteStorage,
                      in nsIMsgWindow msgWindow);

createSubfolder()

 void createSubfolder(in AString folderName,
                      in nsIMsgWindow msgWindow);

addSubfolder()

 nsIMsgFolder addSubfolder(in AString folderName);

createStorageIfMissing()

This method ensures the storage for the folder exists. For local folders, it creates the Berkeley mailbox if missing. For IMAP folders, it subscribes to the folder if it exists, or creates it if it doesn't exist.

 void createStorageIfMissing(in nsIUrlListener urlListener);

compact()

 void compact(in nsIUrlListener aListener,
              in nsIMsgWindow aMsgWindow);

compactAll()

 void compactAll(in nsIUrlListener aListener,
                 in nsIMsgWindow aMsgWindow,
                 in nsISupportsArray aFolderArray,
                 in boolean aCompactOfflineAlso,
                 in nsISupportsArray aOfflineFolderArray);

compactAllOfflineStores()

 void compactAllOfflineStores(in nsIMsgWindow aMsgWindow,
                              in nsISupportsArray aOfflineFolderArray);

emptyTrash()

 void emptyTrash(in nsIMsgWindow aMsgWindow,
                 in nsIUrlListener aListener);

rename()

Change the name of the folder

 void rename(in AString name,
             in nsIMsgWindow msgWindow);

renameSubFolders()

 void renameSubFolders(in nsIMsgWindow msgWindow,
                       in nsIMsgFolder oldFolder);

generateUniqueSubfolderName()

 AString generateUniqueSubfolderName(in AString prefix,
                                     in nsIMsgFolder otherFolder);

updateSummaryTotals()

 void updateSummaryTotals(in boolean force);

summaryChanged()

 void summaryChanged();

getNumUnread()

Get the total number of unread messages in this folder, or in all subfolders.

 long getNumUnread(in boolean deep);

getTotalMessages()

Get the total number of messages in this folder, or in all subfolders.

 long getTotalMessages(in boolean deep);

clearNewMessages()

Clear new status flag of all of the new messages.

 void clearNewMessages();

clearRequiresCleanup()

 void clearRequiresCleanup();

setFlag()

Sets a flag on the folder. The known flags are defined in nsMsgFolderFlags.h.

 void setFlag(in unsigned long flag);

clearFlag()

Clears a flag on the folder. The known flags are defined in nsMsgFolderFlags.h.

 void clearFlag(in unsigned long flag);

getFlag()

Determines if a flag is set on the folder or not. The known flags are defined in nsMsgFolderFlags.h.

 boolean getFlag(in unsigned long flag);

toggleFlag()

Toggles a flag on the folder. The known flags are defined in nsMsgFolderFlags.h.

 void toggleFlag(in unsigned long flag);

onFlagChange()

Called to notify the database and/or listeners of a change of flag.

 void onFlagChange(in unsigned long flag);

setPrefFlag()

Gets the number of folders and folders that have the specified flag set.

Note: DO NOT call from js with resultsize > 1. See Bug 436051. This WILL change.
 void setPrefFlag();

getFoldersWithFlag()

 nsIMsgFolder getFoldersWithFlag(in unsigned long flags,
                                 in unsigned long resultsize,
                                 out unsigned long numFolders);

getAllFoldersWithFlag()

 nsISupportsArray getAllFoldersWithFlag(in unsigned long aFlag);

getExpansionArray()

 void getExpansionArray(in nsISupportsArray expansionArray);

getUriForMsg()

 ACString getUriForMsg()(in nsIMsgDBHdr msgHdr);

deleteMessages()

 void deleteMessages(in nsISupportsArray messages,
                     in nsIMsgWindow msgWindow,
                     in boolean deleteStorage,
                     in boolean isMove,
                     in nsIMsgCopyServiceListener listener,
                     in boolean allowUndo);

copyMessages()

 void copyMessages(in nsIMsgFolder srcFolder,
                   in nsISupportsArray messages,
                   in boolean isMove,
                   in nsIMsgWindow msgWindow,
                   in nsIMsgCopyServiceListener listener,
                   in boolean isFolder,
                   in boolean allowUndo);

copyFolder()

 void copyFolder(in nsIMsgFolder srcFolder,
                 in boolean isMoveFolder,
                 in nsIMsgWindow msgWindow,
                 in nsIMsgCopyServiceListener listener);

copyFileMessage()

 void copyFileMessage(in nsIFile file,
                      in nsIMsgDBHdr msgToReplace,
                      in boolean isDraft,
                      in unsigned long newMsgFlags,
                      in nsIMsgWindow msgWindow,
                      in nsIMsgCopyServiceListener listener);

acquireSemaphore()

 void acquireSemaphore(in nsISupports semHolder);

releaseSemaphore()

 void releaseSemaphore(in nsISupports semHolder);

testSemaphore()

 boolean testSemaphore(in nsISupports semHolder);

getNewMessages()

 void getNewMessages(in nsIMsgWindow aWindow,
                     in nsIUrlListener aListener);

writeToFolderCache()

Write out summary data for this folder to the given folder cache (i.e. panacea.dat)

 void writeToFolderCache(in nsIMsgFolderCache folderCache,
                         in boolean deep);

getNumNewMessages()

The number of new messages since this folder was last visited

 long getNumNewMessages(in boolean deep);

setNumNewMessages()

 void setNumNewMessages(in long numNewMessages);

generateMessageURI()

 ACString generateMessageURI(in nsMsgKey msgKey);

addMessageDispositionState()

 void addMessageDispositionState(in nsIMsgDBHdr aMessage,
                                 in nsMsgDispositionState aDispositionFlag);

markMessagesRead()

 void markMessagesRead(in nsISupportsArray messages,
                       in boolean markRead);

markAllMessagesRead()

 void markAllMessagesRead();

markMessagesFlagged()

 void markMessagesFlagged(in nsISupportsArray messages,
                          in boolean markFlagged);

markThreadRead()

 void markThreadRead(in nsIMsgThread thread);

setLabelForMessages()

 void setLabelForMessages(in nsISupportsArray messages,
                          in nsMsgLabelValue label);

getMsgDatabase()

 nsIMsgDatabase getMsgDatabase(in nsIMsgWindow msgWindow);

setMsgDatabase()

 void setMsgDatabase(in nsIMsgDatabase msgDatabase);

getDBFolderInfoAndDB()

 nsIMsgDatabase getDBFolderInfoAndDB(out nsIDBFolderInfo folderInfo);

GetMessageHeader()

 nsIMsgDBHdr GetMessageHeader(in nsMsgKey msgKey);

shouldStoreMsgOffline()

 boolean shouldStoreMsgOffline(in nsMsgKey msgKey);

hasMsgOffline()

 boolean hasMsgOffline(in nsMsgKey msgKey);

getOfflineFileStream()

 nsIInputStream getOfflineFileStream(in nsMsgKey msgKey,
                                     out PRUint32 offset,
                                     out PRUint32 size);

DownloadMessagesForOffline()

 void DownloadMessagesForOffline(in nsISupportsArray messages,
                                 in nsIMsgWindow window);

getChildWithURI()

 nsIMsgFolder getChildWithURI(in ACString uri,
                              in boolean deep,
                              in boolean caseInsensitive);

downloadAllForOffline()

 void downloadAllForOffline(in nsIUrlListener listener,
                            in nsIMsgWindow window);

enableNotifications()

 void enableNotifications(in long notificationType,
                          in boolean enable,
                          in boolean dbBatching);

isCommandEnabled()

 boolean isCommandEnabled(in ACString command);

matchOrChangeFilterDestination()

 boolean matchOrChangeFilterDestination(in nsIMsgFolder folder,
                                        in boolean caseInsensitive);

confirmFolderDeletionForFilter()

 boolean confirmFolderDeletionForFilter(in nsIMsgWindow msgWindow);

alertFilterChanged()

 void alertFilterChanged(in nsIMsgWindow msgWindow);

throwAlertMsg()

 void throwAlertMsg(in string msgName,
                    in nsIMsgWindow msgWindow);

getStringWithFolderNameFromBundle()

 AString getStringWithFolderNameFromBundle(in string msgName);

notifyCompactCompleted()

 void notifyCompactCompleted();

compareSortKeys()

 long compareSortKeys(in nsIMsgFolder msgFolder);

getSortKey()

 [noscript] void getSortKey(out octet_ptr key,
                            out unsigned long length);

callFilterPlugins()

 boolean callFilterPlugins(in nsIMsgWindow aMsgWindow);

getStringProperty()

 ACString getStringProperty(in string propertyName);

setStringProperty()

 void setStringProperty(in string propertyName,
                        in ACString propertyValue);

isAncestorOf()

Determines if this folder is an ancestor of the supplied folder.

 boolean isAncestorOf(in nsIMsgFolder folder);

containsChildNamed()

Looks in immediate children of this folder for the given name.

 boolean containsChildNamed(in AString name);

getChildNamed()

Return the child folder which the specified name.

 nsIMsgFolder getChildNamed(in AString aName);

findSubFolder()

Finds the sub folder with the specified name.

Note: Even if the folder doesn't currently exist, a nsIMsgFolder may be returned.
 nsIMsgFolder findSubFolder(in ACString escapedSubFolderName);

AddFolderListener()

 void AddFolderListener(in nsIFolderListener listener);

RemoveFolderListener()

 void RemoveFolderListener(in nsIFolderListener listener);

NotifyPropertyChanged()

 void NotifyPropertyChanged(in nsIAtom property,
                            in ACString oldValue,
                            in ACString newValue);

NotifyIntPropertyChanged()

 void NotifyIntPropertyChanged(in nsIAtom property,
                               in long oldValue,
                               in long newValue);

NotifyBoolPropertyChanged()

 void NotifyBoolPropertyChanged(in nsIAtom property,
                                in boolean oldValue,
                                in boolean newValue);

NotifyPropertyFlagChanged()

 void NotifyPropertyFlagChanged(in nsIMsgDBHdr item,
                                in nsIAtom property,
                                in unsigned long oldValue,
                                in unsigned long newValue);

NotifyUnicharPropertyChanged()

 void NotifyUnicharPropertyChanged(in nsIAtom property,
                                   in AString oldValue,
                                   in AString newValue);

NotifyItemAdded()

 void NotifyItemAdded(in nsISupports item);

NotifyItemRemoved()

 void NotifyItemRemoved(in nsISupports item);

NotifyFolderEvent()

 void NotifyFolderEvent(in nsIAtom event);

ListDescendents()

ists all descendents, not just first level children.
 void ListDescendents(in nsISupportsArray descendents);

Shutdown()

 void Shutdown(in boolean shutdownChildren);

setInVFEditSearchScope()

 void setInVFEditSearchScope(in boolean aSearchThisFolder,
                             in boolean aSetOnSubFolders);

copyDataToOutputStreamForAppend()

 void copyDataToOutputStreamForAppend(in nsIInputStream aIStream,
                                      in long aLength,
                                      in nsIOutputStream outputStream);

copyDataDone()

 void copyDataDone();

setJunkScoreForMessages()

 void setJunkScoreForMessages(in nsISupportsArray aMessages,
                              in ACString aJunkScore);

applyRetentionSettings()

 void applyRetentionSettings();

fetchMsgPreviewText()

Get the beginning of the message bodies for the passed in keys and store them in the msg hdr property "preview". This is intended for new mail alerts, title tips on folders with new messages, and perhaps titletips/message preview in the thread pane.

 boolean fetchMsgPreviewText([array, size_is (aNumKeys)] in nsMsgKey aKeysToFetch,
                             in unsigned long aNumKeys,
                             in boolean aLocalOnly,
                             in nsIUrlListener aUrlListener);

addKeywordsToMessages()

Used to set/clear tags - we could have a single method to setKeywords which would figure out the diffs, but these methods might be more convenient. Keywords are space delimited, in the case of multiple keywords.

 void addKeywordsToMessages(in nsISupportsArray aMessages,
                            in ACString aKeywords);

removeKeywordsFromMessages()

 void removeKeywordsFromMessages(in nsISupportsArray aMessages,
                                 in ACString aKeywords);

getMsgTextFromStream()

Extract the message preview text from aStream, storing it as a string property on aMsgHdr.

 AUTF8String getMsgTextFromStream(in nsIMsgDBHdr aMsgHdr,
                               in nsIInputStream aStream,
                               in long aBytesToRead,
                               in long aMaxOutputLen,
                               in boolean aCompressQuotes);