В моем дополнении Thunderbird я хочу слушать новые входящие сообщения и обрабатывать тело сообщения.Как перехватить входящую почту и получить тело сообщения в thunderbird
Так что я написал mailListener
и добавил его к примеру nsIMsgFolderNotificationService
.
Слушатель прекрасно работает и уведомляет о поступлении почты. Я получаю объект nsIMsgDBHdr
, который был извлечен, но я не могу передать сообщение для конкретной папки в функции msgAdded
моего mailListener
. он зависает, и я даже не вижу тело сообщения в панели сообщений Thunderbird.
Я думаю, что nsISyncStreamListener
используется для потоковой передачи сообщения из папки ждет для OnDataAvailable
события, которое еще не сработавшие внутри msgAdded
функций mailListener
«s.
Любые входные данные о том, как получить тело сообщения при появлении нового сообщения? Ниже приведен код для моего mailListener
var newMailListener = {
msgAdded: function(aMsgHdr) {
if(!aMsgHdr.isRead){
let folder = aMsgHdr.folder;
if(aMsgHdr.recipients == "[email protected]"){
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);
}
}
}
};