gpt4 book ai didi

javascript - 使用 javascript (thunderbird) 获取消息正文

转载 作者:行者123 更新时间:2023-11-28 00:47:45 26 4
gpt4 key购买 nike

我正在开发雷鸟扩展,我想获取收到消息的消息正文。
我用过这个功能但是没用...我怎样才能实现这个目标?

 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 的 msgAdded 方法中尚不可用。我认为这是因为 nsISyncStreamListener 使用阻塞流。查看我的问题:How to intercept incoming email and retrieve message body in thunderbird

如果您尝试获取特定“文件夹”中已可用邮件的消息正文(而不是拦截新传入的电子邮件),那么您需要首先获取 nsIMsgDBHdr,然后从中获取要流式传输的 uri body 。以下代码对我有用,我在其中迭代特定文件夹的所有消息。

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 - 使用 javascript (thunderbird) 获取消息正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27159021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com