- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试编写一个 Thunderbird 扩展程序,它可以让您撰写消息,但它会在发送之前处理消息文本。所以我需要访问电子邮件正文的纯文本内容。
这是我目前所拥有的,就像 Extension Developer Javascript 控制台中的一些测试代码一样。
var composer = document.getElementById('msgcomposeWindow');
var frame = composer.getElementsByAttribute('id', 'content-frame').item(0);
if(frame.editortype != 'textmail') {
print('Sorry, you are not composing in plain text.');
return;
}
var doc = frame.contentDocument.documentElement;
// XXX: This does not work because newlines are not in the string!
var text = doc.textContent;
print('Message content:');
print(text);
print('');
// Do a TreeWalker through the composition window DOM instead.
var body = doc.getElementsByTagName('body').item(0);
var acceptAllNodes = function(node) { return NodeFilter.FILTER_ACCEPT; };
var walker = document.createTreeWalker(body, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT, { acceptNode: acceptAllNodes }, false);
var lines = [];
var justDidNewline = false;
while(walker.nextNode()) {
if(walker.currentNode.nodeName == '#text') {
lines.push(walker.currentNode.nodeValue);
justDidNewline = false;
}
else if(walker.currentNode.nodeName == 'BR') {
if(justDidNewline)
// This indicates back-to-back newlines in the message text.
lines.push('');
justDidNewline = true;
}
}
for(a in lines) {
print(a + ': ' + lines[a]);
}
对于我是否在正确的轨道上的任何反馈,我将不胜感激。我还有一些具体问题:
doc.textContent
真的没有换行符吗?这是多么愚蠢?我希望这只是 Javascript 控制台的一个错误,但我怀疑不是。NodeFilter.SHOW_TEXT
但它没有遍历到<SPAN>
s 其中包含回复中引用的 Material 。同样,FILTER_ACCEPT
似乎很有趣每个节点,然后稍后手动选择它,但我遇到了同样的问题,如果我拒绝了 SPAN
节点,步行者不会进入。<BR>
因为没有 #text
,所以打破了天真的实现它们之间的节点。所以我手动检测它们并将空行推送到我的阵列上。真的有必要做那么多手动工作来访问消息内容吗?最佳答案
好吧,大家不要同时插话!
我将其发布为 mozilla.dev.extensions thread并进行了富有成果的讨论。我一直在玩 Venkman,解决方案是抛弃我的 DOM/DHTML 习惯并写入正确的 API。
var editor = window.gMsgCompose.editor;
// 'text/html' works here too
var text = editor.outputToString('text/plain', editor.eNone)
现在 text
具有正在编写的电子邮件正文的纯文本版本。
关于javascript - 如何访问 Thunderbird 消息撰写窗口中的消息内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/665332/
我正在构建一个 Thunderbird 扩展,并希望将我自己的标题添加到所有外发电子邮件(例如 )。知道如何做到这一点吗?我知道这是可能的,因为这是在 OpenPGP Enigmail 扩展中完成的。
我已经使用 Thunderbird 很多年了,现在我有兴趣开发一些我自己的扩展。我查看了他们官方网站上的文档,但发现很少有人对此提供支持。我在 python、perl、php 方面有一些经验,如果你能
Thunderbird 插件 Display Contact Photo在邮件 header 旁边和收件人列表中显示用户的精美图片(或者他们的 gravatar/identicon/wavatar/m
我正在开发 Thunderbird 扩展,不幸的是,我无法从无效中区分出什么仍然有效。网上有很多东西,但其中大部分不再适用于最近的 Thunderbird。 至少,我需要一种从扩展程序中查看日志消息的
任何人都幸运地将自定义工具栏按钮添加到 Thunderbird 的 Compose 窗口,或者知道一个示例插件可以做到这一点?我是 Thunderbird 开发的新手,没有任何运气获得 https:/
所以基本上我正在尝试创建一个非常简单的 Thunderbird-Add-On,并带有一个可以打开 URL 的按钮。 所以我尝试了一些 Firefox-Example-Plugins ( https
我在 Mozilla Thunderbird 中添加了 4 个电子邮件帐户。我需要其中 3 个自动检查新电子邮件,只有在我按下“获取邮件”时才需要 1 个。我去了工具->帐户设置->my@accoun
总结即将发生的事情: 如何通过链接发送日历? 为什么日历第一次保存在我的本地 PC 上时完全正常,而直接从网络上获取时无法修改,尽管它是在没有消息的情况下导入的? 如何找到修改失败的原因? 完整解释:
总结即将发生的事情: 如何通过链接发送日历? 为什么日历第一次保存在我的本地 PC 上时完全正常,而直接从网络上获取时无法修改,尽管它是在没有消息的情况下导入的? 如何找到修改失败的原因? 完整解释:
我想在 Thunderbird 中使用动态电子邮件签名,它是上下文感知的(取决于日期、数据库中的事件等) 如果我有一个可以生成签名 html 的 PHP(即 http://www.site.com/e
我正在用筛子过滤我的邮件。我想标记某些消息,以便它们以相应的标签显示在 Thunderbird 中。 examples说 require "imap4flags";后跟一个 addflag "$lab
全部, 我已经从 Google 阅读器切换到 Thunderbird 来阅读/管理 RSS 提要。 出于某种原因,我导入的提要的文件夹 View 没有显示在 Thunderbird 中,但在“管理订阅
有Thunderbird附加组件可以查找和解析如下所示的邮件,并使用户能够快速将给定的时间和日期添加到日历中吗? Dear Foo, I suggest we meet _tomorrow at 10
我想创建一个扩展,在Thunderbird中添加一个工具栏按钮。按下按钮时,将启动一个外部应用程序,并且当前邮件的文本将导出到该应用程序。 您知道已有的扩展程序吗?如何编写这种扩展名?我应该学习什么才
我几乎隐藏了Thunderbird的所有其他元素,以创建一个最小的界面。我只按日期对邮件进行排序,因此不需要分类栏。 排序栏是否具有我可以使用CSS轻松隐藏的类名(例如.sortBar)? 最佳答案
当我制作新闻稿并将其发送给自己作为测试时,我希望能够在我的电子邮件客户端(Thunderbird)中分析生成的HTML。 是否有类似于Firebug的工具,但适用于Thunderbird?我找到了一个
以编程方式选择第一个选项卡? ?如何使用代码转到第一个选项卡 我可以按 Ctrl+1 移至第一个选项卡 ?我怎样才能用代码做同样的事情 最佳答案 打开 Thunderbird 的错误控制台并尝试输入以
我正在设计一封电子邮件,除了 Thunderbird 外,大多数客户端看起来都不错 - 字体非常细而结实。 有解决办法吗?使其变得粗体会使它在其他客户中过于粗体。 最佳答案 我从来不需要支持 Thun
我想通过 PHP 发送带有内联/嵌入式图像(又名 cid)的邮件。邮件已成功发送并在 Gmail 中正确接收。但是,在 Thunderbird(适用于 Windows 的最新版本)中,不会显示内联/嵌
我关注了the tutorial获得 Thunderbird 扩展并成功获得使用“load”事件的扩展(基本的“date”示例和使用 alert("hey"); 的随机文本都有效)。 但是,我似乎无法
我是一名优秀的程序员,十分优秀!