2017-01-25 11 views
0

受信メールを迷惑メールフォルダに移動する際に問題があります。私はThunderbirdエクステンションを書いていますし、CopyMessage()nsIMsgMessageServiceから迷惑メールフォルダに移動しています。 この機能の使用に問題があります。この関数のドキュメントでは、 "コピーしたいメッセージのURIに合格する。aCopyListenerは既に宛先フォルダについて知っている"と書いている。変数aCopyListenerはnsIStreamListenerのインターフェイスで、宛先の受信メールに関する情報を持つプロパティは表示されません。この機能を正しく使い、メッセージをジャンクフォルダにコピーするには?ドキュメントのメールを迷惑メールフォルダに移動する方法 - 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); 
} 

答えて

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); 
関連する問題