0

Thunderbird のソース コードを使用して、電子メールの添付ファイルを保存したいと考えています。フォーラムで次のコードを取得しましたが、機能していません

    alert("Messages selected: " + gFolderDisplay.selectedCount);
      let enumerator = gFolderDisplay.selectedMessages;
        for each (let msgHdr in fixIterator(enumerator, Ci.nsIMsgDBHdr)) {
          var messageID = msgHdr.messageId;
           alert("MessageID: " + messageID);
           var subject = msgHdr.mime2DecodedSubject;
          alert("Subject: " + subject);
            MsgHdrToMimeMessage(msgHdr, null, function (aMsgHdr, aMimeMsg) {
              try {
        alert("Size of the message: " + aMimeMsg.size);
            alert("Structure of the message:\n" + aMimeMsg.prettyString(true, undefined, true));
             let attachments = aMimeMsg.allUserAttachments || aMimeMsg.allAttachments;
             alert("Number of attachments: " + attachments.length);
                   for (let [index, att] in Iterator(attachments))
        {
            alert ("URL: " + att.url  + " Name: " + att.name);
            let ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);  
            let neckoURL = null;  
            neckoURL = ioService.newURI(att.url, null, null);  
            neckoURL.QueryInterface(Ci.nsIMsgMessageUrl);  
            let uri = neckoURL.uri;  
            let attInfo = new AttachmentInfo(att.contentType, att.url, att.name, uri, att.isExternal);
            attInfo.save();
        }
    } catch (err) {
        alert(err);
    }
}, true, { examineEncryptedParts: true, });
}

上記のコードを使用すると、選択したメッセージを確認できますが、添付ファイルを保存することはできません。添付ファイルの数が表示されます。また、選択したメールに独自のラベルを設定したいと思います。どうすればこれを達成できますか? 助けてください...よろしくお願いします

4

1 に答える 1

0

作業コード

      var enumerator = gFolderDisplay.selectedMessages;
        for each (var msgHdr in fixIterator(enumerator, Components.interfaces.nsIMsgDBHdr)) {
        msgHdr.setStringProperty("docuHive","dhivelabel");

            MsgHdrToMimeMessage(msgHdr, null, function (aMsgHdr, aMimeMsg) {
              try {
             var attachments = aMimeMsg.allUserAttachments || aMimeMsg.allAttachments;
                   for (var [index, att] in Iterator(attachments))
        {
            var ioService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);  
            var neckoURL = null;  
            neckoURL = ioService.newURI(att.url, null, null);  
            neckoURL.QueryInterface(Components.interfaces.nsIMsgMessageUrl);  
            var uri = neckoURL.uri;  
            var attInfo = new AttachmentInfo(att.contentType, att.url, att.name, uri, att.isExternal); 
            // getting the chrome directory
            var file = Components.classes["@mozilla.org/file/directory_service;1"].
           getService(Components.interfaces.nsIProperties).
           get("AChrom", Components.interfaces.nsIFile);

           var msguri = msgHdr.folder.getUriForMsg(msgHdr);

    messenger = Components.classes["@mozilla.org/messenger;1"]
                       .createInstance(Components.interfaces.nsIMessenger);
                       alert(messenger);
        messenger.saveAttachmentToFolder(att.contentType,att.url,"attachmentname.extension",msguri,file);

        }
    } catch (err) {
        alert(err);
    }
}, true, { examineEncryptedParts: true, });
}
于 2013-08-23T08:10:28.487 に答える