在Thunderbird扩展中获取选定的消息数据

Get selected message data in Thunderbird extension

本文关键字:消息 数据 获取 Thunderbird 扩展      更新时间:2023-09-26

我需要在我的Thunderbird扩展中获取一些电子邮件数据。我在MDN上找到了这个例子(https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIMsgMessageService):

var content = "";
  var MessageURI = GetFirstSelectedMessage();
  var MsgService = messenger.messageServiceFromURI(MessageURI);
  var MsgStream =  Components.classes["@mozilla.org/network/sync-stream-listener;1"].createInstance();
  var consumer = MsgStream.QueryInterface(Components.interfaces.nsIInputStream);
  var ScriptInput = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance();
  var ScriptInputStream = ScriptInput.QueryInterface(Components.interfaces.nsIScriptableInputStream);
  ScriptInputStream.init(consumer);
  try {
    MsgService.streamMessage(MessageURI, MsgStream, msgWindow, null, false, null);
  } catch (ex) {
    alert("error: "+ex)
  }
  ScriptInputStream .available();
  while (ScriptInputStream .available()) {
    content = content + ScriptInputStream .read(512);
  }
  alert(content);

然而,当我运行它时,我会得到以下错误:

Timestamp: 2013.06.21. 14:47:21
Error: ReferenceError: GetFirstSelectedMessage is not defined
Source File: chrome://edus_extension/content/messengerOverlay.js
Line: 90

这个"GetFirstSelectedMessage"函数是什么?如何在不使用它的情况下获取消息URI?

此文档看起来相当过时。我建议:

  • 使用CCD_ 1(尝试在错误控制台中键入CCD_
  • 阅读一些使用ServicesMailServices的最新代码,以简化您的代码

话虽如此,我不知道你想实现什么,但:

  • 当然,最好使用MsgHdrToMimeMessage这样的包装器(自引用:http://blog.xulforum.org/index.php?post/2011/01/03/An-雷鸟对话概述)
  • 如果你绝对、绝对需要获得消息的原始内容,http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#223有一个关于如何做到这一点的示例(它是上述MsgHdrToMimeMessage的实现;通过简化它,您应该能够直接获得消息的原始数据)

祝你好运,一旦你得到一个工作样本,请将其添加到MDN维基!

干杯,

jonathan