2010-12-08 20 views
0

Je construis une extension de Mozilla Thunderbird qui fait une traduction de messages. J'aimerais ajouter une fonctionnalité de pièce jointe, bien que j'éprouve quelques difficultés à accéder au contenu de chaque pièce jointe. En ce moment, je suis accroché dans la popup attachmentListContext, et j'ai du code qui rassemble l'adresse URI et les URL de la pièce jointe. Comment accéder aux données binaires de chaque pièce jointe pertinente?Comment puis-je obtenir le contenu d'une pièce jointe dans une extension Mozilla Thunderbird?

code actuel pour obtenir des pièces jointes sélectionnés

handleAttachmentTranslate : function() { 
    // see code in msgHeaderViewOverlay.js in Thunderbird source 
    var attachmentList = document.getElementById('attachmentList'); 
    var selectedAttachments = new Array(); 
    for (var i in attachmentList.selectedItems) { 
    var attachment = attachmentList.selectedItems[i].attachment; 
    // we can now access attachment.url or attachment.uri, etc 
    selectedAttachments.push(attachment.url); 
    // or (ideally) 
    // alert(this.translate(getData(attachment.url))) 
    // but what is getData()? 
    } 
}, 

Répondre

2

addon FiltaQuilla a la capacité d'enregistrer des pièces jointes, etc. Il peut contenir un code qui est pertinent.

Mise à jour le 25 avril 2011: Le page posted by speedball2001 a été modifié entre le 25 mars et le 31 mars. Il a maintenant un exemple complet. Vérifiez cela. Il pointe également à a real extension qui fait exactement la manipulation de pièce jointe. Cela semble être une réponse prometteuse.

L'idée est maintenant de raccorder ce nouveau code de démo à FiltaQuilla si nécessaire.

+0

Ok. J'ai regardé le code FiltaQuilla, il n'extrait pas les pièces jointes, donc ce n'est pas pertinent. – minghua

+0

La page pointée par speedball2001 indique une idée mais il n'y a pas d'exemple de code. Après avoir regardé les références de 'nsIIOService.newChannelFromURI()', 'nsIChannel.asyncOpen()', 'nsIStreamListener', il ressemble à quelque chose de similaire à' nsIMsgMessageService.streamMessage() 'est nécessaire pour gérer l'accumulation de contenu. Voir l'exemple sous 'streamMessage()'. Cependant, on ne sait pas exactement comment le code peut être. – minghua

+0

Mise à jour le 25 avril: La page affichée par speedball2001 a maintenant un exemple complet, et un lien vers une vraie démo. – minghua