Re: questions about how to do multiple IMAP sessions to the server in c-client
On Mon, 1 Nov 2004 [EMAIL PROTECTED] wrote: 2. check the validity of the UIDs, (is there a function in c-client does this?) It's not a function. It's the uid_validity on the stream (e.g. stream->uid_validity). If it is different from the uid_validity from a previous stream, then none of the UIDs from the previous stream are useful any more. -- Mark -- http://staff.washington.edu/mrc Science does not emerge from voting, party politics, or public debate. Si vis pacem, para bellum.
Re: questions about how to do multiple IMAP sessions to the server in c-client
In a message dated 2004/10/28 13:45:24 Eastern Standard Time, [EMAIL PROTECTED] writes: I strongly suggest that you buy a copy of the book "Internet Email Protocols: A Developer's Guide", by Kevin Johnson, published by Addison Wesley, ISBN 0-201-43288-9. Definitely I need to study this book. It is out of print now and I am getting a used one soon. Thanks. While I am reading the RFC 3501, come across one question about the mail's UID. If the requirement for the client, which uses c-client, is to list all mails for each mailbox in UI in one connection. And store the mail's UID in local, later if user clicks on that mail, its UID will be used to fetch the mail's body. It could be done by doing mail_open(...) for each mailbox one-by-one. But seems there is problem for this approach. in 2.3.1.1 Unique Identifier (UID) Message Attribute It says: "The unique identifier of a message MUST NOT change during the session, and SHOULD NOT change between sessions." It means the UID might change between sessions (true/false?). So after select another mailbox, the previous opened mailbox's session is closed and the UID of the mail in previous mailbox might not be simply valid. Does it mean if user clicks one the mail, the client have to do 1. reselect the mailbox by mail_open(), 2. check the validity of the UIDs, (is there a function in c-client does this?) 3. use the adjusted/valid UID for fetching body? Or is there a better approach with c-client? Thanks for your help!
Re: questions about how to do multiple IMAP sessions to the server in c-client
I strongly suggest that you buy a copy of the book "Internet Email Protocols: A Developer's Guide", by Kevin Johnson, published by Addison Wesley, ISBN 0-201-43288-9. Your questions indicate a very basic misunderstanding of the IMAP protocol. Until that misunderstanding is clarified, you are going to have a very long and frustrating experience. On Thu, 28 Oct 2004 [EMAIL PROTECTED] wrote: What I really want is to make sure that after log-ed in until logout, it is counted as in one connection. It's one connection from the point that the initial TCP interchange is made (even before authenticated). If this is true, then after login until logout there can only be one mailbox being selected (one session there). There can only be one mailbox selected at a time. If you select mailbox2 while mailbox1 is selected, then mailbox1 is automatically unselected and mailbox2 is now selected. This forms a new session within the same connection. "can have multiple MAILSTREAMs open, each with a separate mailbox selected", I believe you mean the mail boxes for the MAILSTREAMs might be SELECT'ed before and not closed, but only one is SELECT'ed at the moment. No. I mean that you can have multiple connections, each with a different mailbox SELECTed. This is the only way that you can have more than one mailbox SELECTed at a time. Also if the MAILSTREAM s1's mail box had been SELECT'ed before but now another mail box is SELECT'ed. Could we still call this MAILSTREAM s1 open until it is closed? Any existing MAILSTREAM is not affected by opening a new MAILSTREAM. Each MAILSTREAM is completely independent of any other MAILSTREAMs. By passing a non-null MAILSTREAM to mail_open(), you can do a new SELECT on a MAILSTREAM, without closing the connection. Will the data downloaded into cache while it was open be still in the c-client cache, until s1 is closed even if other mail box is SELECT'ed now (i.e. can still use some of the mail_xxx() function against this stream s1, such as get msg number..)? Each MAILSTREAM has its own cache. The cache is destroyed when the MAILSTREAM is closed, or if the MAILSTREAM is passed to mail_open() to SELECT a new mailbox. -- Mark -- http://staff.washington.edu/mrc Science does not emerge from voting, party politics, or public debate. Si vis pacem, para bellum.
Re: questions about how to do multiple IMAP sessions to the server in c-client
In a message dated 2004/10/28 12:44:49 Eastern Daylight Time, [EMAIL PROTECTED] writes: > "Connection" refers to the entire sequence of client/server interaction from> the initial establishment of the network connection until its termination.>> Could I compare it with login complete?That's like saying "can I compare a drive in my car to starting the motor". I agree the compassion is not appropriate. What I really want is to make sure that after log-ed in until logout, it is counted as in one connection. If this is true, then after login until logout there can only be one mailbox being selected (one session there). Regarding why thinking about keep multiple mailbox selected using c-client: > If the IMAP client which uses c-client wants to show the list of mails from> all of the mailboxes after login complete, then user could select the mail> interested, does it mean that there must be multiple "connections" (multiple> login's) in order to maintain multiple mailboxes to be SELECT'ed, so that the> data in c-client's cache could be used later.Only one mailbox is SELECTed at a time, and c-client only caches data from the currently SELECTed mailbox.You can have multiple MAILSTREAMs open, each with a separate mailbox selected. It is your choice whether you want to do that or to go through each mailbox one-by-one. "can have multiple MAILSTREAMs open, each with a separate mailbox selected", I believe you mean the mail boxes for the MAILSTREAMs might be SELECT'ed before and not closed, but only one is SELECT'ed at the moment. Also if the MAILSTREAM s1's mail box had been SELECT'ed before but now another mail box is SELECT'ed. Could we still call this MAILSTREAM s1 open until it is closed? Will the data downloaded into cache while it was open be still in the c-client cache, until s1 is closed even if other mail box is SELECT'ed now (i.e. can still use some of the mail_xxx() function against this stream s1, such as get msg number..)? HOWEVER!It is an exceedingly poor idea for a client to attempt to list messages from all mailboxes. The list of mailboxes may be extremely long with long servers. You will run out of memory and disk space on your client long before you complete gathering the entire list.It is also a misuse of IMAP. The entire reason why IMAP has all these features to collect individual data items is so the client can access data on demand by the end user, and not have to download everything at startup. Totally agree your comment on thinking about the resource limitation issue. I saw some of the commercial IMAP client(e.g. Communicator), one of basic feature is to list all of the mail entries (sender, subject, time) from different mailbox after log into the server. Then user could brows around, doing a quick local search to see if there is mail from someone or have certain subject, and then click on the interested mail from different mailboxes(I used to call it folders). If the mailbox is not selected at clicking time then it will have to be re-selected at the clicking time. From the nature of IMAP I guess your suggestion is to prefer to reselect than to keep multiple mailbox SELETC'ed in multiple connections. But we still have problem if the client really want get the 10,000 mails to be listed in UI after login. It might take a while on dial up connection Again, thanks for your response and it is really great help!
Re: questions about how to do multiple IMAP sessions to the server in c-client
On Thu, 28 Oct 2004 [EMAIL PROTECTED] wrote: "Connection" refers to the entire sequence of client/server interaction from the initial establishment of the network connection until its termination. Could I compare it with login complete? That's like saying "can I compare a drive in my car to starting the motor". The definitions of "connection" and "session" in RFC 3501 are fairly specific. I believe that any additional definitions would only make matters more complicated instead of less complicated If the IMAP client which uses c-client wants to show the list of mails from all of the mailboxes after login complete, then user could select the mail interested, does it mean that there must be multiple "connections" (multiple login's) in order to maintain multiple mailboxes to be SELECT'ed, so that the data in c-client's cache could be used later. Only one mailbox is SELECTed at a time, and c-client only caches data from the currently SELECTed mailbox. You can have multiple MAILSTREAMs open, each with a separate mailbox selected. It is your choice whether you want to do that or to go through each mailbox one-by-one. HOWEVER! It is an exceedingly poor idea for a client to attempt to list messages from all mailboxes. The list of mailboxes may be extremely long with long servers. You will run out of memory and disk space on your client long before you complete gathering the entire list. It is also a misuse of IMAP. The entire reason why IMAP has all these features to collect individual data items is so the client can access data on demand by the end user, and not have to download everything at startup. The best way to implement an IMAP client is to pretend that you have a basic DOS machine with 640K RAM, a 20MB hard drive, and a 2400bps modem; and to assume that the user has 10,000 mailboxes each with 100,000 messages and each message is 500K. You wouldn't even think of trying a mass download in such an environment. Instead, you would get only that data that is needed at that point in time. -- Mark -- http://staff.washington.edu/mrc Science does not emerge from voting, party politics, or public debate. Si vis pacem, para bellum.
questions about how to do multiple IMAP sessions to the server in c-client
In RFC 3501, it defines "Connection" and "Session" as --- "Connection" refers to the entire sequence of client/server interaction from the initial establishment of the network connection until its termination. -- Could I compare it with login complete? -- "Session" refers to the sequence of client/server interaction from the time that a mailbox is selected (SELECT or EXAMINE command) until the time that selection ends (SELECT or EXAMINE of another mailbox, CLOSE command, or connection termination). -- It also says: --- Only one mailbox can be selected at a time in a connection; simultaneous access to multiple mailboxes requires multiple connections. --- If the IMAP client which uses c-client wants to show the list of mails from all of the mailboxes after login complete, then user could select the mail interested, does it mean that there must be multiple "connections" (multiple login's) in order to maintain multiple mailboxes to be SELECT'ed, so that the data in c-client's cache could be used later. Or it is the client's responsibility to cache the data besides the c-client's cache, and after user selects a mail entry then re-do SELECT for the interested mailbox, so that there is at most only one mailbox is open at all time? What is the suggested way to have access to multiple mailboxes using c-client. Thanks!