javascript - 如何使用雷鸟插件显示电子邮件正文?

标签 javascript email thunderbird-addon

这是我的代码:

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。

关于javascript - 如何使用雷鸟插件显示电子邮件正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41511313/

相关文章:

c++ - 使用 C++ 开发 Thunderbird 扩展

javascript - 如何在 html 上以列表形式显示 firebase 查询结果?

javascript - 如何获取在不同源域的 iframe 中嵌入另一个页面的网页的 url

c# - Serilog 电子邮件接收器 : single email at end of application

javascript - 通过 Thunderbird 扩展进行文件系统操作

css - 如何将 "hack"Thunderbird Lightning 扩展到全彩色类别

javascript - 为什么我们使用console.table方法?

javascript - Node.js async.Detect 如果没有结果

来自 Sharepoint 的 HTML 电子邮件看起来与网站上的不同

perl - 在 perl 中发送多部分邮件