Mailbox ======= 'src/lib-storage/mail-storage.h' and 'mail-storage-private.h' describes mailbox API, among others. Mailbox life cycle often goes like: * 'mailbox_alloc()' allocates memory for the mailbox and initializes some internal settings, but doesn't actually try to open it. * 'mailbox_open()' opens the mailbox. Instead of opening a mailbox, you can also create it with 'mailbox_create()'. * If you're immediately syncing the mailbox, you don't need to open it, because it's done implicitly. This reduces your code and error handling a bit. * 'mailbox_close()' closes the mailbox, so that it needs to be opened again if it's wanted to be accessed. This is rarely needed. * 'mailbox_free()' closes and frees the mailbox. There are a lot of functions to deal with mailboxes. The most important ones are: * 'mailbox_get_status()' to get a summary of mailbox, such as number of messages in it. * [Design.Storage.Mailbox.Sync.txt]: 'mailbox_sync_*()' to synchronize changes from the backend to memory. * [Design.Storage.Mailbox.Transaction.txt]: 'mailbox_transaction_*()' for transaction handling. All message reads and writes are done in a transaction. * [Design.Storage.Mailbox.Search.txt]: 'mailbox_search_*()' is used for searching messages. Even simple operations like "get all messages" go through this API, it'll then simply do "search all". * [Design.Storage.Mailbox.Save.txt]: 'mailbox_save_*()' and 'mailbox_copy()' is used for saving/copying new messages to mailbox. (This file was created from the wiki on 2019-06-19 12:42)