What did you come up with?
Original thread:
viewtopic.php?f=39&t=3032139Here is how to get the "Local Folders" folder.
- Code: Select all
var accountManager = Components.classes["@mozilla.org/messenger/account-manager;1"].
getService(Components.interfaces.nsIMsgAccountManager);
var localFoldersFolder = accountManager.localFoldersServer.rootFolder;
Do you want to create subfolders based on the header address names? Some of these may be illegal folder names.
nsIMsgFolder.createSubfolder
http://dxr.mozilla.org/comm-release/source/mailnews/base/public/nsIMsgFolder.idlHere is how to show a list of unique header address names with count in a new tab. (sorted alphabetically)
- Code: Select all
function openTab(aString) {
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
aString = converter.ConvertFromUnicode(aString);
aString = aString.replace(/&/g, "&");
aString = aString.replace(/>/g, ">");
aString = aString.replace(/</g, "<");
aString = aString.replace(/"/g, """);
aString = aString.replace(/'/g, "'");
var data = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">';
data += "<html><head><title>Authors</title>";
data += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
data += "</head><body><pre>" + aString + "</pre></body></html>";
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
getService(Components.interfaces.nsIWindowMediator);
var win = wm.getMostRecentWindow("mail:3pane");
win.document.getElementById("tabmail").openTab("contentTab", {
contentPage: "data:text/html;charset=utf-8;base64," + btoa(data),
background: true});
}
var headerParser = Components.classes["@mozilla.org/messenger/headerparser;1"].
getService(Components.interfaces.nsIMsgHeaderParser);
var folder = GetFirstSelectedMsgFolder();
var enumerator = folder.messages;
var fromNameArray = [];
var fromNameCounter = {};
while (enumerator.hasMoreElements()) {
var msgHdr = enumerator.getNext().QueryInterface(Components.interfaces.nsIMsgDBHdr);
var subject = msgHdr.mime2DecodedSubject;
var from = msgHdr.mime2DecodedAuthor;
var to = msgHdr.mime2DecodedRecipients;
var date = new Date(msgHdr.dateInSeconds * 1000).toLocaleString();
var fromName = headerParser.extractHeaderAddressName(from);
var fromMailboxes = headerParser.extractHeaderAddressMailboxes(from);
if (fromNameArray.indexOf(fromName) === -1) {
fromNameArray.push(fromName); // unique
}
fromNameCounter[fromName] = fromNameCounter[fromName] ? fromNameCounter[fromName] + 1 : 1;
}
fromNameArray = fromNameArray.sort();
for (var i = 0; i < fromNameArray.length; i++) {
fromNameArray[i] = (i + 1) + ". " + fromNameArray[i] + " - " + fromNameCounter[fromNameArray[i]];
}
openTab(fromNameArray.join("\n"));
Why do you want to create filters to copy messages? Why not just copy messages?
nsIMsgCopyService.CopyMessages
http://dxr.mozilla.org/comm-release/source/mailnews/base/public/nsIMsgCopyService.idlhttp://dxr.mozilla.org/comm-release/source/mailnews/base/public/nsIMsgCopyServiceListener.idl