Страницы: 1
Дело в том, что хочу загнать в строку и потом обработать тело пришедшего сообщения. Ключ сообщения узнавать научился. По ключу могу извлечь все заголовки, а вот тело никак не могу достать. Может кто чего нибудь знает?
Отсутствует
Спасибо всем, кто заглянул. Я сам нашел решение проблемы. Если кому понадобится, то мне вобщем не жалко. Выкладываю код, который выбирает из только что полученных сообщений письмо, в котором тема соответствует "subject", а затем вытягивает из этой мессаги тело (body):
var RDF = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService();
RDF = RDF.QueryInterface(Components.interfaces.nsIRDFService);
var uri = "mailbox://nobody@Local%20Folders/Inbox";
var resource = RDF.GetResource(uri);
var msgFolder =
resource.QueryInterface(Components.interfaces.nsIMsgFolder);
var MsgDataBase = msgFolder.getMsgDatabase(msgWindow);
var firstKey = MsgDataBase.FirstNew;
var OK_List1 = false;
var MsgDBHdr;
while ((!OK_List1)&&(MsgDataBase.HasNew()))
{
MsgDBHdr = MsgDataBase.GetMsgHdrForKey(firstKey);
if (MsgDBHdr.subject == "subject")
OK_List1 = true;
else
{
MsgDataBase.MarkRead(firstKey, true, null);
firstKey = MsgDataBase.FirstNew;
}
}
if (OK_List1)
{
MsgDBHdr.markRead(true);
var offset = new Object();
var messageSize = new Object();
try
{
is = msgFolder.getOfflineFileStream(firstKey,offset,messageSize);
}
catch(e)
{
alert("message: "+e.message);
}
try
{
var factory = Components.classes["@mozilla.org/scriptableinputstream;1"];
var sis = factory.createInstance(Components.interfaces.nsIScriptableInputStream);
sis.init(is);
bodyAndHdr = sis.read(MsgDBHdr.messageSize-10);
}
catch(e)
{
alert("message: "+e.message);
}
var hdrstr = bodyAndHdr.indexOf("\r\n\r\n"); //marks the end of the //headers
var body = bodyAndHdr.substring(hdrstr+1,bodyAndHdr.length);
Надеюсь кому-нибудь пригодится...
Отсутствует
Страницы: 1