README Mail::Box The Mail::Box folder is a modern mail-folder manager -- at least on the moment of this writing ;) It is written to replace Mail::Folder, although it interface is different. The most important manual-pages are Mail::Box::Manager, Mail::Box, and Mail::Box::Message. They explain parts of the features in more detail than this document. ===== Status Although the implementation of Mail::Box is young, it has already a large number of features. See the file STATUS to see what has been tested and what isn't. Version 1.200 contained 293 tests, but that is certainly not sufficient call the module `well tested'. ===== Features = AUTOLOAD messages. Everyone who has used MIME::Entity will agree that the module is nice and structured but slow: detailed parsing of e-mail messages by MIME::Entity is twice as slow as the general message-parsing of Mail::Internet (where it is based on). The Mail::Box modules are trying to keep messages stored in the mailbox file(s) for as long as possible. Only if the user of a folder really needs the content of a message, that message is read from file and parsed. Demand- or delayed-parsing of messages is implemented using the standard AUTOLOAD mechanism, which means that it is not visible to the user of the folder! This mechanism also reduces the memory foot-print of the program enormously. A few (or all) header-lines are available, even when a message is not parsed. For instance the `Subject'-line is taken, because it is nearly always needed. These are taken to try to avoid triggering autoloading of the whole message for only a single header-line. Even so: when you write a folder, after reading through it, unmodified messages are not printed from memory, but copied from the old-folder into a new one on a byt-by-byte basis. There will be no change, even when the whole message got parsed. = Support for various folder-types Currently supported: * Mbox folders, see Mail::Box::Mbox One file per folder, so many messages in each file. * MH folders, see Mail::Box::MH One directory per folder, each message in a seperate file. See STATUS for my wishlist. = Support for message thread-discovery A very basic detection of message threads is implemented. On the moment, only the In-Reply-To and the References fields are taken into account. This could be optimized, for instance by looking at the subject. Read more in Mail::Box::Threads. = Various kinds of locking There are three kinds of locking: * Locking via a .lock (dotlock) file. * Locking using flock * Locking via a .lock (dotlock) file which is NFS-safe. Read more in Mail::Box::Locker. = Managing folders A special folder manager was designed to keep track on opened folders. This is the main object (read its manual-page Mail::Box::Manager before trying anything else). = Tied access If you like, you can tie a folder to an array, and fool around with that one. Read Mail::Box::Tie. ===== Differences with Mail::Folder The popular Mail::Folder package is around for many years. It is written to use Mail::Internet, instead of the more powerful MIME::Entity messages which Mail::Box uses. Mail::Folder does not support discussion-thread detection, nor autoloading of message data. Therefore, it is much slower in accessing the folders. An other large difference, is that the object-structure in Mail::Folder are less clear than in Mail::Box. The supported mail-box types are seperately implemented, and share less code than they could. The folders manage themselves instead of a seperate folder-manager object. ====== Author: Mark Overmeer mark@overmeer.net