Thunderbird扩展:打开eml文件

时间:2012-06-11 17:31:04

标签: javascript xul thunderbird thunderbird-addon

我已经创建了一个执行以下操作的扩展程序:

当我使用命令行thunderbird -MyCustomParam1 "12345"运行Thinderbird时,我的扩展程序将打开一个撰写窗口并将参数"12345"添加到窗口。

我使用的一些代码:

// In the calling code
var args = {
  param1: 12345,

};

args.wrappedJSObject = args;
var watcher = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
                            .getService(Components.interfaces.nsIWindowWatcher);
watcher.openWindow(null, url, windowName, features, args);


// In the window code
var args = window.arguments[0].wrappedJSObject;

当然使用正确的网址和功能。

现在我想做同样的事情,但是对于消息窗口和选择的eml文件。

您可以从命令行打开eml文件,如下所示:Thunderbird test.eml(这将在新窗口中打开邮件)。

我想要的是以下内容:

Thunderbird test.eml -MycustomParam1 "1234"应该打开邮件,并将参数"1234"添加到屏幕,这样我就可以在文档窗口中访问它,就像示例1一样。

所以基本上我想要watcher.openWindow之类的内容,但需要一个给定的eml文件。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以在MsgOpenFromFile function中看到这是如何完成的,正在调用File / Open Saved Message菜单项。您基本上必须使用eml文件(get an nsIFile instance from file path),turn it into a URI,然后在打开消息窗口之前更改查询字符串:

uri.QueryInterface(Components.interfaces.nsIURL);
uri.query = "type=application/x-message-display";
watcher.openWindow(null, "chrome://messenger/content/messageWindow.xul", "_blank",
                   "all,chrome,dialog=no,status,toolbar", uri);