Javascript Thunderbird插件-按发件人筛选
我有一个电子邮件ID列表。我想过滤收件箱中的邮件,并在thunderbird中仅显示来自这些用户的电子邮件。请帮我做这个 这是我到目前为止尝试过的,它不起作用。但我收到了完全不相关的错误消息“我们无法打印或预览此页面”Javascript Thunderbird插件-按发件人筛选,javascript,email,firefox-addon,xul,thunderbird,Javascript,Email,Firefox Addon,Xul,Thunderbird,我有一个电子邮件ID列表。我想过滤收件箱中的邮件,并在thunderbird中仅显示来自这些用户的电子邮件。请帮我做这个 这是我到目前为止尝试过的,它不起作用。但我收到了完全不相关的错误消息“我们无法打印或预览此页面” 您实际上不需要编写任何JS代码来实现这一点。Thunderbird的搜索机制可以通过两种用户界面可访问的方式使用: 定义“保存的搜索”文件夹。这将使用一组条件筛选一个或多个文件夹,并在单个文件夹中显示结果。请参阅并注意,您可能需要脱机搜索,因为这比询问IMAP服务器更快: 定义
您实际上不需要编写任何JS代码来实现这一点。Thunderbird的搜索机制可以通过两种用户界面可访问的方式使用:
- 定义“保存的搜索”文件夹。这将使用一组条件筛选一个或多个文件夹,并在单个文件夹中显示结果。请参阅并注意,您可能需要脱机搜索,因为这比询问IMAP服务器更快:
- 定义可应用于任何文件夹的“邮件视图”。通过右键单击邮件工具栏,选择“自定义…”并将标记为“邮件视图”的组合框拖动到工具栏来自定义邮件工具栏。点击“完成”关闭“自定义”对话框。单击工具栏上的组合框,选择“自定义…”,点击“新建…”定义并命名筛选条件。然后,您可以通过单击组合框并将其定位在“自定义视图”标题下来应用邮件视图
很抱歉取消其中两个URL的超链接,但是反垃圾邮件机制不允许我在帖子中有超过2个链接…您看到这个Mozilla页面了吗 感谢您的回答。这些电子邮件列表将根据用户请求而更改(即它们是动态的)。因此创建虚拟文件夹不是正确的解决方案。
var gLocalIncomingServer = MailServices.accounts.localFoldersServer;
var gLocalMsgAccount = MailServices.accounts.FindAccountForServer(
gLocalIncomingServer);
var gLocalRootFolder = gLocalIncomingServer.rootMsgFolder
.QueryInterface(Ci.nsIMsgLocalMailFolder);
const kInboxFlag = Components.interfaces.nsMsgFolderFlags.Inbox;
var gLocalInboxFolder = gLocalRootFolder.getFolderWithFlags(kInboxFlag);
gLocalRootFolder.findSubFolder(gLocalInboxFolder.URI);
gLocalInboxFolder.setFlag(Ci.nsMsgFolderFlags.Mail);
// Force an initialization of the Inbox folder database.
var folderName = gLocalInboxFolder.prettiestName;
var aValue = "example@domain.com";
var aAttrib = Ci.nsMsgSearchAttrib.Sender;
var aop = nsMsgSearchOp.Contains;;
var hitCount = 1;
var searchListener =
{
onSearchHit: function(dbHdr, folder) { hitCount++; },
onSearchDone: function(status)
{
print("Finished search does " + aHitCount + " equal " + hitCount + "?");
searchSession = null;
do_check_eq(aHitCount, hitCount);
if (onDone)
onDone();
},
onNewSearch: function() {hitCount = 0;}
};
// define and initiate the search session
var hitCount;
var searchSession = Cc["@mozilla.org/messenger/searchSession;1"]
.createInstance(Ci.nsIMsgSearchSession);
searchSession.addScopeTerm(Ci.nsMsgSearchScope.offlineMail, gLocalInboxFolder);
var searchTerm = searchSession.createTerm();
searchTerm.attrib = aAttrib;
var value = searchTerm.value;
// This is tricky - value.attrib must be set before actual values
value.attrib = aAttrib;
value.str = aValue;
searchTerm.value = value;
if (aAttrib > nsMsgSearchAttrib.OtherHeader)
searchTerm.arbitraryHeader = gArrayHdrs[aAttrib - 1 - nsMsgSearchAttrib.OtherHeader];
searchTerm.op = aOp;
searchTerm.booleanAnd = false;
searchSession.appendTerm(searchTerm);
searchSession.registerListener(searchListener);
searchSession.search(null);
alert("search is done:");