使用 JavaScript 获取消息正文 (Thunderbird)
get message body using javascript (thunderbird)
>我正在开发一个雷鸟扩展,我想获取收到的消息的消息正文。
我使用了这个功能,但它不起作用...我怎样才能做到这一点?
function getMessageBody() {
let messageURI = GetLoadedMessage();
let aMessageHeader = messenger.msgHdrFromURI(messageURI);
// I try
// aMessageHeader = messenger.messageServiceFromURI(messageURI).messageURIToMsgHdr(messageURI);
// aMessageHeader = url.QueryInterface(Components.interfaces.nsIMsgMessageUrl).messageHeader;
// too
let messenger = Components.classes["@mozilla.org/messenger;1"]
.createInstance(Components.interfaces.nsIMessenger);
let listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"]
.createInstance(Components.interfaces.nsISyncStreamListener);
let uri = aMessageHeader.folder.getUriForMsg(aMessageHeader);
messenger.messageServiceFromURI(uri)
.streamMessage(uri, listener, null, null, false, "");
let folder = aMessageHeader.folder;
return folder.getMsgTextFromStream(listener.inputStream,
aMessageHeader.Charset,
65536,
32768,
false,
true, {});
}
您是否在拦截新传入电子邮件的 mailListener 中调用 getMessageBody()?在这种情况下,我遇到了同样的问题,其中要流式传输的消息在 mailListener 的 msgAdd 方法中尚不可用。我认为这是因为nsISyncStreamListener使用阻塞流。看我的问题:如何在雷鸟中拦截传入的电子邮件并检索邮件正文
如果您尝试在特定"文件夹"中获取已经可用的邮件的邮件正文(而不是拦截新的传入电子邮件),那么您需要先掌握 nsIMsgDBHdr,然后从中获取 uri 以流式传输正文。以下代码对我有用,我在其中迭代特定文件夹的所有消息。
for each (let aMessageHeader in fixIterator(folder.msgDatabase.EnumerateMessages(), Ci.nsIMsgDBHdr)){
let messenger = Components.classes["@mozilla.org/messenger;1"]
.createInstance(Components.interfaces.nsIMessenger);
let listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"]
.createInstance(Components.interfaces.nsISyncStreamListener);
let uri = aMessageHeader.folder.getUriForMsg(aMessageHeader);
messenger.messageServiceFromURI(uri).streamMessage(uri, listener, null, null, false, "");
let folder = aMessageHeader.folder;
let messageBody = folder.getMsgTextFromStream(listener.inputStream,
aMessageHeader.Charset,
65536,
32768,
false,
true,
{ });
alert("message body : " + messageBody);
}
希望这有帮助!
相关文章:
- javascript问题正文样式
- JQuery在单击正文时隐藏上下文菜单
- 我可以在网页正文中插入文本链接吗
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- 正在尝试将标题标记添加到mailto链接,正文中包含URL
- Thunderbird,如何以编程方式选择第一个选项卡
- 在外部(正文)单击时关闭弹出窗口
- 正文中未显示内容
- 将电子邮件正文导出到Google Sheets中的多个单元格中
- 如何从应用于正文的css中排除特定的表单
- 使用 postman.setNextRequest() 在发送之前填充请求正文
- 阻止在单击和关闭覆盖菜单css时滚动正文
- 如何在不支持HTML字符的邮件正文中发送%签名
- IE9 XMLHTTPRequest请求正文不完整,但readyState=4 statuscode=200
- 我是否可以使用 Angular 将鼠标向上事件绑定到文档正文
- 类型错误:无法读取开机自检后未定义的属性“正文”(平均值)
- HTML 框架 - 防止引导弹出窗口在用户单击正文时消失
- 使用 switch 语句更改页面正文
- 使用 JavaScript 获取消息正文 (Thunderbird)
- 使用Javascript获取一个thunderbird邮件项目的正文内容