将传入的电子邮件移至垃圾文件夹时出现问题。我正在编写Thunderbird扩展,我使用CopyMessage()
中的函数nsIMsgMessageService
将传入邮件移动到垃圾文件夹。
我有使用此功能的问题。在此函数的文档中,正在编写“传入您要复制的邮件的URI.aCopyListener已经知道目标文件夹。”变量aCopyListener是来自nsIStreamListener
的接口,我没有看到任何具有目标传入邮件信息的属性。如何正确使用此功能并将邮件复制到垃圾文件夹?
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);
}
答案 0 :(得分:0)
这是我用来将当前所选邮件复制到另一个文件夹的内容:
Components.utils.import("resource:///modules/mailServices.js");
var msgs = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
msgs.appendElement(gFolderDisplay.selectedMessage, false);
var isMove = false;
var copyService = MailServices.copy; // nsIMsgCopyService
let destFolder = gFolderDisplay.displayedFolder.rootFolder;
copyService.CopyMessages(gFolderDisplay, msgs, destFolder, isMove, CopyListener, null, false);