2013-04-08 5 views
0

Я хотел бы сохранить вложения электронной почты, используя исходный код thunderbird. Я получил следующий код в вашем forums..but ее не работаетсохранить вложения электронной почты с использованием источника 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, }); 
} 

Использования выше коды я могу в состоянии пройти через выбранный messages.but не спасая attachments.its, показывающее количество вложений. А также я хотел бы установить собственные ярлыки для выбранных писем. Как я могу это достичь? Пожалуйста, помогите мне ... Спасибо заранее

+1

Вы должны, по крайней мере, показать, что вы сделали некоторые усилия, пытаясь понять неудачи. Где код не соответствует точно? Каковы значения «[index, att]» для каждой итерации цикла? Какие сообщения об ошибках вы получаете на консоли ошибок? –

ответ

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, }); 
} 
Смежные вопросы