I have a ThunderBird extention that saving email to disk. It using function SaveMessageToDisk and before all was OK.
As i remember on version TB 60.4 it worked fine, but on TB 60.8 all incoming letters automatically marked as read by this function.
I try to write saving to disk by myself. I try example from here: https://developer.mozilla.org/en-US/doc ... mMessage().
Code: Select all
var content = "";
var MessageURI = GetFirstSelectedMessage();
var MsgService = messenger.messageServiceFromURI(MessageURI);
var MsgStream = Components.classes["@mozilla.org/network/sync-stream-listener;1"].createInstance();
var consumer = MsgStream.QueryInterface(Components.interfaces.nsIInputStream);
var ScriptInput = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance();
var ScriptInputStream = ScriptInput.QueryInterface(Components.interfaces.nsIScriptableInputStream);
ScriptInputStream.init(consumer);
try {
MsgService.streamMessage(MessageURI, MsgStream, msgWindow, null, false, null);
} catch (ex) {
alert("error: "+ex)
}
ScriptInputStream.available();
while (ScriptInputStream.available()) {
content = content + ScriptInputStream.read(512);
}
Just for test i tryed use only «ScriptInputStream.read(512)» — same result.
Then i found topic: http://forums.mozillazine.org/viewtopic ... p=14756968 and use example with function getMsgTextFromStream:
Code: Select all
var msgHdr = gFolderDisplay.selectedMessage;
var msgUri = msgHdr.folder.getUriForMsg(msgHdr);
var messenger = Components.classes["@mozilla.org/messenger;1"].
createInstance(Components.interfaces.nsIMessenger);
var msgService = messenger.messageServiceFromURI(msgUri);
var syncStreamListener = Components.classes["@mozilla.org/network/sync-stream-listener;1"].
createInstance(Components.interfaces.nsISyncStreamListener);
msgService.streamMessage(msgUri, syncStreamListener, null, null, false, "", true);
var contentType = new Object();
var data = msgHdr.folder.getMsgTextFromStream(
syncStreamListener.inputStream, msgHdr.Charset, 65536, 32768, false, true, contentType);
So, i have two questions:
1) Is there any way to use the function SaveMessageToDisk so that it doesn't mark emails as read?
2) If not — how to make the way with the functions streamMessage or getMsgTextFromStream work?