我正在开发我自己的Thunderbird扩展。扩展插件添加了一个.xml文件作为Thunderbird邮件的附件(效果非常好)。我唯一的问题是我不知道如何使用相对路径。
它看起来像这样:
var file= 'C:\...[… \…]...\chrome\VHitG2.xml';
var attachments = [];
attachments.push(FileToAttachment(file));
AddAttachments(attachments);
如果扩展安装在其他路径中,则该扩展无法工作
有人知道如何使用相对路径吗?
FileToAttachment()
函数并没有魔法,它实际上非常简单。我假设您谈论的是一个静态文件,它是您的扩展名的一部分——它应该可以在chrome://myextension/content/VHitG2.xml
这样的URL下访问。然后,您可以简单地使用以下URL自己创建一个nsIMsgAttachment实例:
var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"]
.createInstance(Components.interfaces.nsIMsgAttachment);
attachment.url = "chrome://myextension/content/VHitG2.xml";
AddAttachments([attachment]);
请注意,您的扩展插件不需要解压缩安装,也不需要磁盘上的实际文件。
我使用了一种非常迂回的方法来获取扩展文件的URL:
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var test1 = FileUtils.getFile("CurProcD", ["VHitG2.xml"]);
var test2 = FileUtils.getFile("CurProcD", ["VHitG.xml"]);
var file1 = test1.path.replace(/VHitG2.xml/i, "extensions\custom-toolbar-button@example.com\chrome\VHitG2.xml");
var file2 = test2.path.replace(/VHitG.xml/i, "extensions\custom-toolbar-button@example.com\chrome\VHitG.xml");
var attachment1 = file1.replace(/\/g, "\\");
var attachment2 = file2.replace(/\/g, "\\");