2017-01-06 11 views
1

이 내 코드입니다 : 경고에, 표시, 모질라의 설명서에 따라 예상되는썬더 버드 - 애드온을 사용하여 이메일 본문을 표시하는 방법은 무엇입니까?

var newMailListener = { 
msgAdded: function(aMsgHdr) { 
    if(!aMsgHdr.isRead) { 
    gFolderDisplay.selectMessage(aMsgHdr); 
    var uri = gFolderDisplay.selectedMessageUris; 
    alert(uri); 
    msgHdr = messenger.messageServiceFromURI(uri).messageURIToMsgHdr(uri); 
    alert(getMessageBody(msgHdr,uri)); 
    goDoCommand("cmd_markAsRead"); 
    } 
} 
}; 
function init() { 
var ancienmsg = null; 
var notificationService = Components.classes["@mozilla.org/messenger/msgnotificationservice;1"] 
.getService(Components.interfaces.nsIMsgFolderNotificationService); 
notificationService.addListener(newMailListener, notificationService.msgAdded); 
} 
addEventListener("load", init, true); 

function getMessageBody(aMessageHeader, uri) 
{ 
    let messenger = Components.classes["@mozilla.org/messenger;1"] .createInstance(Components.interfaces.nsIMessenger); 
    alert("charge messenger"); 
    let listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"].createInstance(Components.interfaces.nsISyncStreamListener); 
    alert("charge listener"); 
    messenger.messageServiceFromURI(uri) 
     .streamMessage(uri, listener, null, null, false, ""); 
    let folder = aMessageHeader.folder; 
    alert("initialise messenger"); 
    return folder.getMsgTextFromStream(listener.inputStream, 
           aMessageHeader.Charset, 
           65536, 
           32768, 
           false, 
           true, 
           { }); 
} 

, 메일의 본문 받았다. 그러나 getMessageBody 메소드가 반환 될 때마다 Thunderbird가 중단되고 다시 시작해야합니다. 아무도 왜 그것을 어떻게 표시해야하는지에 대한 아이디어가 있습니까?

답변

0

또 다른 Stackoverflow 질문에서, 나는 이것을 발견하고 그것은 나를 위해 작동합니다.

Components.utils.import("resource:///modules/gloda/mimemsg.js"); 
var newMailListener = { 
msgAdded: function(aMsgHdr) { 
    if(!aMsgHdr.isRead){ 
    MsgHdrToMimeMessage(aMsgHdr, null, function (aMsgHdr, aMimeMessage) { 
    // do something with aMimeMessage: 
    alert("the message body : " + aMimeMessage.coerceBodyToPlaintext()); 

    //alert(aMimeMessage.allUserAttachments.length); 
    //alert(aMimeMessage.size); 
    }, true); 
    } 
} 
}; 

하지만 HTML이 아닌 텍스트 만 표시됩니다.