Contar todos los mensajes sin leer


(Lapsop) #1

Hola, tengo una pregunta referente a como saber todos los mensajes que tengo sin leer para luego usar ese dato en un programa externo.
Todo empezo cuando empece usando el rainmeter pero no han creado ningun plugin para eso, asi que como soy de los que no se rinden he pensado que podria hacer de alguna manera para que el rainmeter me diga cuantos mensajes tengo sin leer en la o las carpetas inbox de mis cuentas.
Encontre un addon llamado Extra Folder Columns con el que empece a investigar pero como no me pierdo.
La idea es crear un vbs, dll, o xpi para poder comunicarme entre los dos programas, los dos primeros lo veo mas complicado pero no quita que lo intente pero por ahora veo mas rapido o mas facil hacerlo por xpi y que ingrese una entrada en el registro de windows para luego sacar el dato por un plugin de rainmeter.
El problema es que no doy con cual seria la mejor manera de hacerlo ya que no tengo tantos conocimientos sobre el codigo del thunderbird.
Espero que me puedan orientar o decirme que class, etc… utilizar.
Saludos y gracias


(Jesanchez) #2

Hola, lo mejor que se me ocurre es que revises el código y el funcionamiento de X-notifier https://addons.mozilla.org/en-US/firefox/addon/xnotifier/, un complemento para Firefox que notifica cuántos mensajes sin leer hay en una cuenta de correo. El código está aquí https://addons.mozilla.org/en-US/firefox/files/browse/181376/.

Espero te sirva, saludos.


(Lapsop) #3

Gracias por contestar,
Pero ese addon es como un mini thunderbird pero no usa el mismo codigo que el thunderbird.
Pero por otro lado lo he conseguido aunque no se si es la mejor forma, aunque me queda ajustarlo mas. ya que no se actualiza.

var rainthun = { init: function(){ let UnRead = ]; let Name = ]; let acctMgr = Components.classes"@mozilla.org/messenger/account-manager;1"].getService(Components.interfaces.nsIMsgAccountManager); let accounts = acctMgr.accounts; for (var i = 0; i < accounts.Count(); i++){ let account = accounts.QueryElementAt(i, Components.interfaces.nsIMsgAccount); let rootFolder = account.incomingServer.rootFolder; // nsIMsgFolder let subFolders = rootFolder.subFolders; // nsIMsgFolder while(subFolders.hasMoreElements()){ let folder = subFolders.getNext().QueryInterface(Components.interfaces.nsIMsgFolder); let isInbox = folder.getFlag(Components.interfaces.nsMsgFolderFlags.Inbox); if(isInbox){ // Application.console.log(rootFolder.prettiestName); // Application.console.log(folder.getNumUnread(false)); Name.push(rootFolder.prettiestName); UnRead.push(folder.getNumUnread(false)); } } } //Application.console.log(Name + UnRead); } }; window.addEventListener("load", rainthun.init, false);


(Lapsop) #4

Bueno he buscado addons y he encontrado para linux algunas extensiones para hacer justamente lo que queria.
Asi que con un pequeño ajuste funciona al 100%, si quereis probarla decirmelo.
Se actualiza al instante y en el rainmeter muestro los mensajes sin leer de la o las carpetas inbox.