Mail Listing Example ==================== How to use ~~~~~~~~~~ This example demonstrates how to display a listing of mails in a fast and efficient way. Although IMAP is used here, POP3 and MBOX will be easy to implement as well. The files used by this example are in the mail-listing-example directory inside the docs directory of the Mail component. The output of the mail.php script is html, so in order to see it in a browser you will have to copy the files in your web root directory, and change the include_path variable in the mail.php file to point to the directory where the eZ Components are kept. You will also have to specify a valid IMAP server with a valid username and password in the app.ini file. The compiled_templates directory needs to have write permissions for itself and its subdirectories, so be sure to set that. When clicking on a mail in the mail list, the browser will try to load the message.php file with the ID and mailbox of the clicked message. This file is not implemented yet. Structure ~~~~~~~~~ mail.php -------- This is the main script. It uses the Mail, Configuration and Template components. You have to modify the 3rd line to point to your location of the eZ Components. Run it from a browser as http://localhost/mail.php or similar depending on your web server. The current mailbox and the current page in the mail listing are specified using GET, and are initial Inbox and 1. .. include:: mail-listing-example/mail.php :literal: app.ini ------- Contains the settings of this small example. You can set which folders to use for the templates, how many mails per page to display, and various IMAP settings such as server, username and password and which mailbox is the default one. .. include:: mail-listing-example/app.ini :literal: app/paging_links.php -------------------- Contains a definition of a template custom block used to display links to other pages in the mail listing (e.g. 1 | 2 | 3 , where each number is a link to the respective page). .. include:: mail-listing-example/app/paging_links.php :literal: templates/mail_listing.ezt -------------------------- Contains an html template used in mail.php. Uses the custom block paging_links defined in the app/paging_links.php file. .. include:: mail-listing-example/templates/mail_listing.ezt :literal: Speed considerations ~~~~~~~~~~~~~~~~~~~~ By using paging in a mail listing and parsing only the headers of the mails for this (using the method top() instead of fetch*() from IMAP/POP3), the mail listing is quite fast, around 0.3 seconds instead of around 1.1 seconds (or more if there are large mails in the current mailbox), for a page size of 10 mails per page. Extending this example ~~~~~~~~~~~~~~~~~~~~~~ This example shows just a basic way to do a mail listing. More features can be added by a developer, for example: - login with an username and password instead of reading those from an ini file - implement sorting of the mails based on date, subject, sender, size - implement flags support (with the IMAP methods fetchFlags(), setFlag(), clearFlag()) - implement mail operations (select all mails, delete, move, copy, set flags) .. Local Variables: mode: rst fill-column: 79 End: vim: et syn=rst tw=79