Here is how to copy the selected messages to a newly created local folder using chrome code.
Code: Select all
(function () {
function copyListener(aFolder) {
this.OnStartCopy = function() {};
this.OnProgress = function(aProgress, aProgressMax) {};
this.SetMessageKey = function(aKey) {};
this.GetMessageId = function(aMessageId) {};
this.OnStopCopy = function(aStatus) {
if (Components.isSuccessCode(aStatus)) {
aFolder.updateFolder(msgWindow);
gFolderTreeView.selectFolder(aFolder);
}
};
}
function folderListener() {
this.OnItemAdded = function(aParentItem, aItem) {
try {
var destFolder = aItem.QueryInterface(Components.interfaces.nsIMsgFolder);
var sourceFolder = GetFirstSelectedMsgFolder();
var msgHdrs = gFolderDisplay.selectedMessages;
var mutableArray = Components.classes["@mozilla.org/array;1"].
createInstance(Components.interfaces.nsIMutableArray);
for (var i = 0; i < msgHdrs.length; i++) {
var msgHdr = msgHdrs[i];
mutableArray.appendElement(msgHdr, false /*weak*/);
}
var cs = Components.classes["@mozilla.org/messenger/messagecopyservice;1"].
getService(Components.interfaces.nsIMsgCopyService);
cs.CopyMessages(sourceFolder, mutableArray, destFolder,
false /*isMove*/, new copyListener(destFolder), msgWindow, false /*allowUndo*/);
} catch(e) {}
mailSession.RemoveFolderListener(listener);
};
this.OnItemRemoved = function(aParentItem, aItem) {};
this.OnItemPropertyChanged = function(aItem, aProperty, aOldValue, aNewValue) {};
this.OnItemIntPropertyChanged = function(aItem, aProperty, aOldValue, aNewValue) {};
this.OnItemBoolPropertyChanged = function(aItem, aProperty, aOldValue, aNewValue) {};
this.OnItemUnicharPropertyChanged = function(aItem, aProperty, aOldValue, aNewValue) {};
this.OnItemPropertyFlagChanged = function(aItem, aProperty, aOldFlag, aNewFlag) {};
this.OnItemEvent = function(aItem, aEvent) {};
}
var mailSession = Components.classes["@mozilla.org/messenger/services/session;1"].
getService(Components.interfaces.nsIMsgMailSession);
var listener = new folderListener();
var notifyFlags = Components.interfaces.nsIFolderListener.all;
mailSession.AddFolderListener(listener, notifyFlags);
var am = Components.classes["@mozilla.org/messenger/account-manager;1"].
getService(Components.interfaces.nsIMsgAccountManager);
var folder = am.localFoldersServer.rootFolder;
if (folder instanceof Components.interfaces.nsIMsgLocalMailFolder) {
folder.createLocalSubfolder("Cowabunga");
} else {
folder.createSubfolder("Cowabunga", msgWindow);
}
})();
Similar thread:
http://forums.mozillazine.org/viewtopic ... &t=3007865
Reference
http://searchfox.org/comm-esr78/source/ ... ervice.idl
http://searchfox.org/comm-esr78/source/ ... stener.idl
http://searchfox.org/comm-esr78/source/ ... Folder.idl
http://searchfox.org/comm-esr78/source/ ... Folder.idl
How to select all messages in the selected folder...
How to get the folder name...
i.e. username and date without @example.com string
Code: Select all
(function () {
function getDateTime() {
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth() + 1;
var day = now.getDate();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
if (month.toString().length == 1) month = "0" + month;
if (day.toString().length == 1) day = "0" + day;
if (hour.toString().length == 1) hour = "0" + hour;
if (minute.toString().length == 1) minute = "0" + minute;
if (second.toString().length == 1) second = "0" + second;
var dateTime = year + month + day + hour + minute + second;
return dateTime;
}
var folder = GetFirstSelectedMsgFolder();
alert(folder.server.username.split("@")[0] + " " + getDateTime());
})();