У меня есть проблема с перемещением входящей почты в папку нежелательной почты. Я пишу расширение Thunderbird и использую функцию CopyMessage()
от nsIMsgMessageService
для перемещения входящей почты в папку нежелательной почты. У меня проблема с использованием этой функции. В документации этой функции записывается «Передача в URI для сообщения, которое вы хотите скопировать. ACopyListener уже знает о папке назначения». Переменная aCopyListener - это интерфейс от nsIStreamListener
, и я не вижу никаких свойств, у которых была бы информация о входящей почте назначения. Как правильно использовать эту функцию и скопировать сообщение в папку junky?Как переместить почту в папку нежелательной почты - Thunderbird
Ссылка для документации: https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMsgMessageService#CopyMessage()
function listMessages(aFolder) {
Components.utils.import("resource:///modules/iteratorUtils.jsm");
let database = aFolder.msgDatabase;
for each (let msgHdr in fixIterator(database.EnumerateMessages(),
Components.interfaces.nsIMsgDBHdr)) {
let title = msgHdr.mime2DecodedSubject;
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 = msgHdr.folder.getUriForMsg(msgHdr);
var messageService = messenger.messageServiceFromURI(uri);
messenger.messageServiceFromURI(uri).streamMessage(uri, listener, null, null, false, "");
let folder = msgHdr.folder;
let messageBody = folder.getMsgTextFromStream(listener.inputStream,
msgHdr.Charset,
65536,
32768,
false,
true,
{ });
var incomingMail = folder.server.rootFolder.getChildNamed("Odebrane");
var junkyMail = folder.server.rootFolder.getChildNamed("Niechciane");
messageService.CopyMessage(incomingMail.URI, listener, true, null, null, new Object);
}
aFolder.msgDatabase = null;
database.forceFolderDBClosed(aFolder);
}