Полезная информация

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№119-05-2006 16:14:06

Raven
Участник
 
Группа: Members
Зарегистрирован: 18-05-2006
Сообщений: 11

Как получить тело сообщения, зная его ключ "key"?

Дело в том, что хочу загнать в строку и потом обработать тело пришедшего сообщения. Ключ сообщения узнавать научился. По ключу могу извлечь все заголовки, а вот тело никак не могу достать. Может кто чего нибудь знает?

Отсутствует

 

№219-05-2006 20:17:52

Raven
Участник
 
Группа: Members
Зарегистрирован: 18-05-2006
Сообщений: 11

Re: Как получить тело сообщения, зная его ключ "key"?

Спасибо всем, кто заглянул. Я сам нашел решение проблемы. Если кому понадобится, то мне вобщем не жалко.:) Выкладываю код, который выбирает из только что полученных сообщений письмо, в котором тема соответствует "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);

Надеюсь кому-нибудь пригодится...:cool:

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]