【发布时间】:2015-01-31 15:14:50
【问题描述】:
在我的 Thunderbird 插件中,我想收听新收到的电子邮件并处理邮件正文。
所以我写了一个mailListener 并将其添加到nsIMsgFolderNotificationService 的实例中。
监听器工作正常并在邮件到达时通知。我得到了已提取的nsIMsgDBHdr 对象,但我无法在mailListener 的msgAdded 函数中为特定文件夹流式传输消息。它挂起,我什至看不到 Thunderbird 的消息窗格中的消息正文。
我认为用于从文件夹流式传输消息的 nsISyncStreamListener 等待 OnDataAvailable 事件,该事件尚未在 mailListener 的 msgAdded 函数内触发。
关于如何在收到新电子邮件时获取消息正文的任何输入?下面是我的mailListener的代码
var newMailListener = {
msgAdded: function(aMsgHdr) {
if( !aMsgHdr.isRead ){
let folder = aMsgHdr.folder;
if(aMsgHdr.recipients == "myemail+special@gmail.com"){
let messenger = Components.classes["@mozilla.org/messenger;1"]
.createInstance(Components.interfaces.nsIMessenger);
let listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"]
.createInstance(Components.interfaces.nsISyncStreamListener);
let uri = aMsgHdr.folder.getUriForMsg(aMsgHdr);
messenger.messageServiceFromURI(uri).streamMessage(uri, listener, null, null, false, "");
let messageBody = aMsgHdr.folder.getMsgTextFromStream(listener.inputStream,
aMsgHdr.Charset,
65536,
32768,
false,
true,
{ });
alert("the message body : " + messageBody);
}
}
}
};
【问题讨论】:
标签: email thunderbird thunderbird-addon