I'd really like to know what is the minimum amount of work (starting 
from scratch) to get the datasource populated for folders.  What I would 
like to avoid:

creating a tree
using a msgWindow

I'd really like to be able to access mail resources without having the 
actual messenger application open.  I really want access to the users 
mail folders and messages from outside of messenger.  I see the API and 
so far I've gone so far as to find the attributes of the INBOX for all 
the accounts a user may have but I can't seem to get beyond that.  What 
I seem to be missing is the link where the datasource is actually 
filled.  Here's some quick code that I've been playing with that, so far 
gets me the inbox folder attributes.  If I call any functionality on the 
folder I don't get anything back, for example calling 
getNumUnread(true), always returns -1.

start example:

function tryRDF()
{
     try
     {
         RDF = 
Components.clases["@mozilla.org/rdf/rdf-service;1"].getService();
         RDF = RDF.QueryInterface(Components.interfaces.nsIRDFService);
     }
     catch(ex)
     {
         alert("no RDF?");
         return;
     }
     var AccountManager = 
Components.classes["@mozilla.org/messenger/account-manager;1"];
     var AccountManagerService = AccoutnManagerComponent.getService();
     var AccountManager = 
AccountManagerService.QueryInterface(Components.interfaces.nsIMsgAccountManager);
     var Accounts = AccountManager.accounts;

     for (var i = 0; i < Accounts.Count(); i++)
     {
         var Account = Accounts.GetlElementAt(i);
         Account = 
Account.QueryInterface(Components.interfaces.nsIMsgAccount);
         IncomingServer = Account.incomingServer;
         if (IncomingServer.hostName != "Local Folders")
         {
             var Folder;
             var Mailbox = "mailbox://" + IncomingServer.username + "@" 
+ IncomingServer.hostName + "/INBOX";
             if (IncomingServer.type == "imap" || IncomingServer.type == 
"pop3")
             {
                 Folder = RDF.GetResource(MailBox);
                 Folder = 
Folder.QueryInterface(Components.interfaces.nsIMsgFolder);
                 alert("pretty name - " + Folder.prettiestName);
                 alert("Unread msgs = " + Folder.getNumUnread(true));
             }
             else
             {
                 dump("not a mail account");
             }
         }
     }
}

what I get:

first alert returns:
pretty name - INBOX
second alert returns:
Unread msgs = -1

There are currently 22 unread messages in one of the INBOX folders for 
the accounts I have setup.  What am I missing?

Dan

(to get to me directly, remove the -nospam's from my reply address)


Reply via email to