Пример #1
0
 public bool PurgeInbox( CTNInbox inbox, bool all )
 {
     bool error = false;
     String filter;
     if ( all )
         filter = String.Empty;
     else
         filter = "delete=true";
     DataView result = inbox.Inbox;
     result.RowFilter = filter;
     if ( result.Count>0 ) {
         int total = 0, totalbytes = 0;
         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 ( null, total, inbox, 0, 0 );
         result.RowFilter = filter;
         error = (error)?error:!this.deletemessages(result);
         error = (error)?error:!this.getListToIndex ( null, total, inbox, 0, 0 );
         this.quit();
     }
     result.RowFilter = String.Empty;
     return !error;
 }
Пример #2
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;
        }
Пример #3
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;
        }