예제 #1
0
        private bool getListToIndex( Hashtable msgs, int total, CTNInbox inbox, int npage, int npagesize )
        {
            bool error = false;

            Int32[] list = new Int32[total];
            String[] uidlist = new String[total];
            if ( total>0 ) {
                // Get uid list
                error = (error)?error:!this.uidl ( uidlist, 0);
                //Get messages list
                error = (error)?error:!this.list ( list );
            }
            // Prepare message table with new messages
            error = (error)?error:!inbox.buildMessageTable ( list, uidlist );

            list = null;
            uidlist =  null;

            //Determine what messages we have to index
            if ( msgs!=null )
                error = (error)?error:!inbox.buildMessageList ( msgs, npage, npagesize );

            return !error;
        }
예제 #2
0
        public virtual bool GetFolderIndex( CTNInbox inbox, int npage, int npagesize, bool askserver )
        {
            bool error = false;
            int total = 0;
            int totalbytes = 0;
            Hashtable list = new Hashtable();

            if ( !askserver ) {
                error = !inbox.buildMessageList ( list, npage, npagesize );
                askserver = (!error&&list.Count>0)?!askserver:askserver;
            }
            if ( askserver ) {
                Hashtable messages = new Hashtable();
                error = !this.connect();
                error = (error)?error:!this.login ( this.username, this.password );
                error = (error)?error:!this.status ( ref total, ref totalbytes );

                error = (error)?error:!this.getListToIndex ( list, total, inbox, npage, npagesize );

                if ( !error && total>0 && list.Count>0 ) {
                    MemoryStream header = null;
                    foreach ( DictionaryEntry msg in list ) {
                        error = (error)?error:!this.getMessageHeader ( out header, (int) msg.Key );
                        if ( !error )
                            messages.Add(msg.Value, header);
                    }
                }
                this.quit();
                foreach ( DictionaryEntry item in messages ) {
                    MemoryStream stream = this.getStreamDataPortion(item.Value as MemoryStream);
                    SharpMimeHeader header = new SharpMimeHeader( stream, stream.Position );
                    header.Close();
                    inbox.newMessage ( item.Key.ToString(), header );
                }
            }
            return !error;
        }