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; }
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; }
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; }