在我的Thunderbird附加組件中,我想收聽新收到的電子郵件並處理郵件正文。如何攔截傳入的電子郵件並檢索雷鳥中的郵件正文
所以我寫了一個mailListener
並把它添加到nsIMsgFolderNotificationService
一個實例。
監聽器正常工作,並通知郵件何時發送。我得到nsIMsgDBHdr
被取回的對象,但我無法在我的mailListener
的msgAdded
函數中傳輸特定文件夾的消息。它會掛起,我甚至無法在Thunderbird的消息窗格中看到消息正文。
我想用來從文件夾中等待OnDataAvailable
事件還未被觸發mailListener
的msgAdded
函數內流的消息nsISyncStreamListener
。
任何有關如何在新郵件發送時獲取郵件正文的輸入?下面是代碼爲我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);
}
}
}
};