发送消息后,在Thunderbird扩展中获取发件人和收件人

超级乔斯

我在尝试创建Thunderbird扩展,这是自举/无重启类型之一(我的意思是,javascript代码不是从叠加层运行的,而是监听器触发了各种事件)。

在某个时候,我想在用户决定发送邮件时检查发件人和收件人(“收件人”,“抄送”,“密件抄送”),以便对它们进行一些检查。

我已经设置并工作了许多事件监听器,其中包括一个用于事件的监听器,compose-send-message当用户确认发送消息后,该事件会正确触发。

在这里,我找不到如何获取发件人电子邮件地址以及所有收件人的电子邮件地址。我尝试了两种:

let fields = components.classes["@mozilla.org/messengercompose/composefields;1"].
  createInstance(components.interfaces.nsIMsgCompFields)

与:

let params = components.classes["@mozilla.org/messengercompose/composeparams;1"].
  createInstance(components.interfaces.nsIMsgComposeParams);

let fields = params.composeFields;

但无论如何都会fields.hasRecipients返回false,例如fields.to为null(或为空,无法精确调用)。看来他们并未被TB设置。

当然,我也在与覆盖扩展相关的TB线程中四处搜寻,但是没有运气。有一个SO线程在这里,这似乎并没有完全回答这个问题,因为它只有大约发件人。
其他参考文献:再次MozillaZineTB stdlib

超级乔斯

好吧,多亏了在此mozilla.dev.apps.thunderbird线程和此mozilla.dev.extensions线程上的人们的帮助,我能够从compose-send-message事件侦听器中访问发送者和接收者

这是相关的代码...实际上,还有更多:果汁就在里面onComposeSendMessage

var windowMediator = components.classes['@mozilla.org/appshell/window-mediator;1'].
  getService(components.interfaces.nsIWindowMediator);

var listener = new Listener(windowMediator);
windowMediator.addListener(listener);

function Listener (windowMediator) {

  var self = this;
  var _mediator = windowMediator;
  var _compose = null;

  this.onOpenWindow = function (aWindow) {
    // [...]

    _compose = aWindow.docShell.
      QueryInterface(components.interfaces.nsIInterfaceRequestor).
      getInterface(components.interfaces.nsIDOMWindow);

    _compose.addEventListener('compose-send-message', self.onComposeSendMessage, true);
  };

  this.onComposeSendMessage = function (event) {
    event.currentTarget.removeEventListener(event.type, self.onComposeSendMessage, true);

    // event.currentTarget.gMsgCompose <--> _compose.gMsgCompose

    // Get sender
    log(_compose.gMsgCompose.identity.email); // DEBUG with custom log function

    // Get recipients
    log(_compose.gMsgCompose.compFields.to);  // DEBUG
    log(_compose.gMsgCompose.compFields.cc);  // DEBUG
    log(_compose.gMsgCompose.compFields.bcc);  // DEBUG
  };

  this.onCloseWindow = function () {
    _mediator.removeListener(self); // Remove itself, so to not receive message twice
  };

  // [...]

}

再次感谢所有这些小组的反馈。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

mysql查询以显示带有发件人和收件人的消息

来自分类Dev

使用 PHPmailer 向发件人和收件人发送邮件

来自分类Dev

获取聊天数据并按收件人和发件人ID排序

来自分类Dev

发件人和收件人之间的聊天室消息不同的背景颜色不起作用

来自分类Dev

私人收件箱中发件人和收件人的背景颜色不同

来自分类Dev

Java中发件人和收件人的不同聊天文本背景颜色

来自分类Dev

如何使用Chromecast将消息从自定义收件人发送到发件人应用?

来自分类Dev

我收到一封电子邮件(gmail),如果发件人和收件人使用相同的域,如何知道发件人的 IP 地址

来自分类Dev

Outlook Express 收件人和发件人列为空白 - 带有 GoDaddy 电子邮件的 IMAP

来自分类Dev

如何构建一个查询来汇总交换发件人和收件人的交易余额

来自分类Dev

使用Gmail API获取“发件人”和“收件人”地址

来自分类Dev

在Thunderbird中回复邮件时,将收件人地址用作发件人地址?

来自分类Dev

如何使用mailx发送电子邮件,以便“发件人”和“收件人”正确显示在电子邮件中?

来自分类Dev

Neo4j希望返回发件人,将多个唯一的附件发送给收件人

来自分类Dev

转发 Outlook 电子邮件,无需添加签名,也无需添加原始电子邮件的发件人和收件人:

来自分类Dev

如何在PHP中更改通过管道转发的电子邮件的“发件人”和“收件人”部分

来自分类Dev

更改收件人的SMS短信的“发件人”字段

来自分类Dev

电子邮件被回复给收件人,而不是发件人或回复地址

来自分类Dev

TYPO3 tx_form复制到发件人(收件人副本)

来自分类Dev

从Outlook电子邮件中选择/复制“发件人,收件人,日期,附件”标题

来自分类Dev

Lotus Domino 解析电子邮件地址(发件人、收件人)

来自分类Dev

批量电子邮件发件人的标题“收件人:”

来自分类Dev

如果“收件人”和“发件人”标头是垃圾邮件发送者的电子邮件地址,我如何收到这封电子邮件?

来自分类Dev

msmtp空“收件人”和“发件人”字段-从CLI或手动发送时,所有邮件最终都以“批量邮件”结尾

来自分类Dev

Ruby:发送电子邮件:来自文本文件的电子邮件服务器、发件人、收件人、主题、正文

来自分类Dev

根据收件人设置发件人电子邮件地址

来自分类Dev

在Android中获取发件人的地址

来自分类Dev

获取所有收件人:Thunderbird中的电子邮件

来自分类Dev

如何从 Gmail 中提取所有发件人、收件人、抄送、密件抄送电子邮件以存储在 Google 表格中?

Related 相关文章

  1. 1

    mysql查询以显示带有发件人和收件人的消息

  2. 2

    使用 PHPmailer 向发件人和收件人发送邮件

  3. 3

    获取聊天数据并按收件人和发件人ID排序

  4. 4

    发件人和收件人之间的聊天室消息不同的背景颜色不起作用

  5. 5

    私人收件箱中发件人和收件人的背景颜色不同

  6. 6

    Java中发件人和收件人的不同聊天文本背景颜色

  7. 7

    如何使用Chromecast将消息从自定义收件人发送到发件人应用?

  8. 8

    我收到一封电子邮件(gmail),如果发件人和收件人使用相同的域,如何知道发件人的 IP 地址

  9. 9

    Outlook Express 收件人和发件人列为空白 - 带有 GoDaddy 电子邮件的 IMAP

  10. 10

    如何构建一个查询来汇总交换发件人和收件人的交易余额

  11. 11

    使用Gmail API获取“发件人”和“收件人”地址

  12. 12

    在Thunderbird中回复邮件时,将收件人地址用作发件人地址?

  13. 13

    如何使用mailx发送电子邮件,以便“发件人”和“收件人”正确显示在电子邮件中?

  14. 14

    Neo4j希望返回发件人,将多个唯一的附件发送给收件人

  15. 15

    转发 Outlook 电子邮件,无需添加签名,也无需添加原始电子邮件的发件人和收件人:

  16. 16

    如何在PHP中更改通过管道转发的电子邮件的“发件人”和“收件人”部分

  17. 17

    更改收件人的SMS短信的“发件人”字段

  18. 18

    电子邮件被回复给收件人,而不是发件人或回复地址

  19. 19

    TYPO3 tx_form复制到发件人(收件人副本)

  20. 20

    从Outlook电子邮件中选择/复制“发件人,收件人,日期,附件”标题

  21. 21

    Lotus Domino 解析电子邮件地址(发件人、收件人)

  22. 22

    批量电子邮件发件人的标题“收件人:”

  23. 23

    如果“收件人”和“发件人”标头是垃圾邮件发送者的电子邮件地址,我如何收到这封电子邮件?

  24. 24

    msmtp空“收件人”和“发件人”字段-从CLI或手动发送时,所有邮件最终都以“批量邮件”结尾

  25. 25

    Ruby:发送电子邮件:来自文本文件的电子邮件服务器、发件人、收件人、主题、正文

  26. 26

    根据收件人设置发件人电子邮件地址

  27. 27

    在Android中获取发件人的地址

  28. 28

    获取所有收件人:Thunderbird中的电子邮件

  29. 29

    如何从 Gmail 中提取所有发件人、收件人、抄送、密件抄送电子邮件以存储在 Google 表格中?

热门标签

归档