firemail
标题:
账号、邮件、服务等关联及常用获取方法
[打印本页]
作者:
hechengjin
时间:
2015-11-5 23:14
标题:
账号、邮件、服务等关联及常用获取方法
https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Account_examples
var acctMgr = Components.classes["@mozilla.org/messenger/account-manager;1"]
.getService(Components.interfaces.nsIMsgAccountManager);
var accounts = acctMgr.accounts;
for (var i = 0; i < accounts.length; i++) {
var account = accounts.queryElementAt(i, Components.interfaces.nsIMsgAccount);
var rootFolder = account.incomingServer.rootFolder; // nsIMsgFolder
Application.console.log(rootFolder.prettiestName);
if (rootFolder.hasSubFolders) {
var subFolders = rootFolder.subFolders; // nsIMsgFolder
while(subFolders.hasMoreElements()) {
var folder = subFolders.getNext().QueryInterface(Components.interfaces.nsIMsgFolder);
Application.console.log(folder.prettiestName);
}
}
}
复制代码
作者:
hechengjin
时间:
2015-11-5 23:16
获取邮件夹方法
1.根据rdf获取
/*
var rdf = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService(Components.interfaces.nsIRDFService);
let identity = getCurrentIdentity();
var sent_folder="identity."+identity.key+".fcc_folder";
const Cc = Components.classes;
const Ci = Components.interfaces;
let prefBranch = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService).getBranch("mail.");
var sendfolder = prefBranch.getCharPref(sent_folder);
var folder = rdf.GetResource(sendfolder).QueryInterface(Components.interfaces.nsIMsgFolder);
if (folder.flags & Components.interfaces.nsMsgFolderFlags.SentMail)
{
var tmc = folder.getTotalMessages(false);
var sentfoldermsgCount ="identity."+identity.key+".fcc_folder_msgCount";
prefBranch.setIntPref(sentfoldermsgCount,tmc);
}
*/
//这里根据调用的位置不同,获取已发送邮件夹的方法不同
// if ( gFolderTreeView == undefined)
{
var folders = GetSelectedMsgFolders(); //方法2
if( folders.length > 0)
{
var rootFolder = folders[0].rootFolder;
let allfolders = rootFolder.subFolders;
while(allfolders.hasMoreElements())
{
let folder = allfolders.getNext();
folder = folder.QueryInterface(Components.interfaces.nsIMsgFolder);
if( folder.isSpecialFolder(Components.interfaces.nsMsgFolderFlags.SentMail, false) )
{
this.numTotalMessages += folder.getTotalMessages (true);
this.buildUpFolderList ( folder );
}
}
}
}
/* else
{
var rdf = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService(Components.interfaces.nsIRDFService);
let identity = getCurrentIdentity();
var sent_folder="identity."+identity.key+".fcc_folder";
const Cc = Components.classes;
const Ci = Components.interfaces;
let prefBranch = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService).getBranch("mail.");
var sendfolder = prefBranch.getCharPref(sent_folder);
var folder = rdf.GetResource(sendfolder).QueryInterface(Components.interfaces.nsIMsgFolder);
if (folder.flags & Components.interfaces.nsMsgFolderFlags.SentMail)
{
this.numTotalMessages += folder.getTotalMessages (true);
this.buildUpFolderList ( folder );
}
}
*/
复制代码
作者:
hechengjin
时间:
2015-11-5 23:22
smtp服务器获取
function initSmtpSettings_richinfo() {
var smtpService = Components.classes["@mozilla.org/messengercompose/smtp;1"]
.getService(Components.interfaces.nsISmtpService);
var servers = smtpService.smtpServers;
while (servers.hasMoreElements())
{
var server = servers.getNext();
if (server instanceof Components.interfaces.nsISmtpServer)
{
if(server.key == document.getElementById("identity.smtpServerKey").value)
{
initSmtpSettings_ri(server);
break;
}
}
}
}
if (server) {
gSmtpHostname_ri.value = server.hostname;
gSmtpDescription_ri.value = server.description;
gSmtpPort_ri.value = server.port ? server.port : "";
gSmtpUsername_ri.value = server.username;
gSmtpAuthMethod_ri.value = server.authMethod;
gSmtpSocketType_ri.value = (server.socketType < 4) ? server.socketType : 1;
复制代码
作者:
hechengjin
时间:
2016-3-8 14:25
数据floderID判断是不是特定邮件夹
const { GlodaDatastore } = Cu.import('resource:///modules/gloda/datastore.js', {})
const { Gloda } = Cu.import('resource:///modules/gloda/public.js', {})
exports.getXPCOMFolderFromFolderID = (folderID) => {
let glodaFolder = GlodaDatastore._mapFolderID(folderID)
return glodaFolder.getXPCOMFolder()
}
exports.isConversationFolder = (folderID) => {
try {
let folder = exports.getXPCOMFolderFromFolderID(folderID)
folder.QueryInterface(Ci.nsIMsgFolder)
if (folder.isSpecialFolder(Ci.nsMsgFolderFlags.Trash, true)) {
return false
}
if (folder.isSpecialFolder(Ci.nsMsgFolderFlags.Drafts, true)) {
return false
}
} catch (e) {
console.log(e + e.stack)
}
return true
}
// 根据邮件夹获取当前账号所有folderID
function getAccountFolderIDs (folder) {
let account = folder.server
let AccountFolderIDs = []
let allfolders = account.rootFolder.subFolders
while (allfolders.hasMoreElements()) {
let folder = allfolders.getNext()
folder = folder.QueryInterface(Ci.nsIMsgFolder)
let accountFolderID = getFolderID(folder)
AccountFolderIDs.push(accountFolderID)
}
return AccountFolderIDs
}
复制代码
欢迎光临 firemail (http://firemail.wang:8088/)
Powered by Discuz! X3