Mozilla扩展系列链接:

1浅谈基于Mozilla Thunderbird的扩展开发

2基于Mozilla平台的扩展开发(续)----XPCOM组件篇

3基于MozillaThunderbird的扩展开发(三)---如何获取邮件的完整信息

4基于MozillaThunderbird的扩展开发(四)---修改Thunderbird源代码实现自动保存附件


 

      在上一篇《基于Mozilla Thunderbird的扩展开发(三)---如何获取邮件的完整信息

》中给出了一种简单的获取邮件的完整信息(包括正文和附件等)的方法,但仔细考虑后发现离实际需求还有一段距离。

      Thunderbird已经有保存附件的功能,但需要手动去操作,既然手头有它的源代码,为什么我们不自己尝试对它进行修改,从而使得它能自动保存所有附件呢?Ok,这篇文章就是基于这样思想的一个尝试。

      首先明确一个前提,本文并不想开发一个扩展,而是尝试直接修改Thunderbird的源代码,但你也可以将它修改为一个扩展,这里为了调试开发简单起见,因此我选择了直接修改其代码。

      要想自动保存附件,首先需要知道在它源代码中的哪个点去执行保存附件这样一个动作,在多次试验后发现可以msgMail3PaneWindow.js中的177行处的folderListener对象进行修改如下:

基于Mozilla Thunderbird的扩展开发(四)---修改Thunderbird源代码实现自动保存附件    

接下来那些具体保存邮件的代码这里就省略了,具体可以参考上一篇文章,要重点提的一点是这一句代码:

基于Mozilla Thunderbird的扩展开发(四)---修改Thunderbird源代码实现自动保存附件gDBView.loadMessageByMsgKey(msgKey);//加载邮件
基于Mozilla Thunderbird的扩展开发(四)---修改Thunderbird源代码实现自动保存附件


当执行它时,会加载邮件信息,从而会触发对附件的处理函数,因此我们可以在附件的处理函数中进行保存附件的处理。
      msgHdrViewOverlay.js
文件中第425行处的handleAttachment方法就是我们需要修改的地方。

基于Mozilla Thunderbird的扩展开发(四)---修改Thunderbird源代码实现自动保存附件        handleAttachment: function(contentType, url, displayName, uri, isExternalAttachment) 

真正完成保存附件的是下面的aeMessenger对象:

基于Mozilla Thunderbird的扩展开发(四)---修改Thunderbird源代码实现自动保存附件var aeMessenger = 


注:这里设置了一个流监听器的作用是为了对文件流的写入进行监控,并不是必须的

   好了,这下就可以用make命令重新编译thunderbird源代码了,测试时先启动thunderbird,当接收到新邮件并且其含有附件时,就会自动下载并保存。

如果需要完整的源代码,请发email:phinecos#163.com(#改为@)

 

 Reference:

1, http://www.eviljeff.com/?page=moz-extensions

 

相关文章:

  • 2021-07-19
  • 2022-12-23
  • 2021-05-01
  • 2022-01-11
  • 2022-12-23
  • 2022-12-23
  • 2021-10-04
  • 2022-12-23
猜你喜欢
  • 2021-10-01
  • 2021-10-08
  • 2022-01-01
  • 2021-09-09
  • 2021-07-08
  • 2022-03-06
相关资源
相似解决方案