如何使用雷鸟插件显示电子邮件的正文



这是我的代码:

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,  
                                 { });  
}

根据Mozilla的文档,应该在警报中显示收到的邮件正文。但是,每次在返回getMessageBody方法期间,雷鸟崩溃,我需要重新启动它。有没有人知道为什么以及如何显示它?

在另一个 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。

相关内容

  • 没有找到相关文章

最新更新