在Thunderbird扩展中获取选定的消息数据 [英] Get selected message data in Thunderbird extension

查看:92
本文介绍了在Thunderbird扩展中获取选定的消息数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在Thunderbird扩展中获取一些电子邮件数据.我在MDN( https://developer.mozilla.org/zh- US/docs/XPCOM_Interface_Reference/nsIMsgMessageService ):

I need to get some e-mail message data in my Thunderbird extension. I found this example on 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);

但是,当我运行它时,出现以下错误:

However, when I run it I get the following error:

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?

What is this 'GetFirstSelectedMessage' function and how can I get message URI without using it?

推荐答案

该文档看起来已经过时了.我建议:

This documentation looks fairly outdated. I would suggest:

  • 使用gFolderDisplay.selectedMessage(尝试在错误控制台中键入top.opener.gFolderDisplay.selectedMessage)
  • 阅读一些使用ServicesMailServices的最新代码,以简化您的代码.
  • using gFolderDisplay.selectedMessage (try typing top.opener.gFolderDisplay.selectedMessage in the Error Console),
  • reading some recent code that uses Services and MailServices so as to simplify your code.

话虽这么说,但我不知道您要达到什么目标,但是:

That being said, I don't know what you're trying to achieve but:

  • you'd certainly be better off using a wrapper such as MsgHdrToMimeMessage (self-reference: http://blog.xulforum.org/index.php?post/2011/01/03/An-overview-of-Thunderbird-Conversations)
  • if you absolutely, absolutely need to get the raw contents of the message, http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#223 has an example on how to do that (it's the implementation of the said MsgHdrToMimeMessage; by simplifying it, you should be able to get directly the raw data of the message).

祝您好运,一旦您获得了有效的示例,请将其添加到MDN Wiki!

Good luck with that, once you get a working sample, please add it to the MDN wiki!

干杯

乔纳森

这篇关于在Thunderbird扩展中获取选定的消息数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆