CSS: Providing seven essential vitamins and minerals since 1996.
Have a steaming hot, delicious slice of Standards.

Mail_IMAPv2 Inbox Example

<?php /** * Demonstrates how to set-up a basic inbox using Mail_IMAP. * See {@link connect} for extended documentation on * how to set the connection URI. * * @author Richard York <rich_y@php.net> * @copyright (c) Copyright 2004, Richard York, All Rights Reserved. * @package Mail_IMAP * @subpackage examples ** */ error_reporting(E_ALL); require_once 'Mail/IMAP.php'; // Use an existing imap resource stream, or provide a URI abstraction. // Example of URI: // pop3://user:pass@mail.example.com:110/INBOX#notls // // If you are unsure of the URI syntax to use here, // use the Mail_IMAP_connection_wizard to find the right URI. // Or see docs for Mail_IMAP::connect // // The connection URI must also be set in: // IMAP.inbox.php. // IMAP.message_viewer.php // IMAP.part_viewer.php $connection = 'imap://user:pass@mail.example.net:143/INBOX'; if (!isset($_GET['dump_mid'])) { $msg =& new Mail_IMAP(); } else { // Call on debuging automatically. include 'Mail/IMAP/Debug/Debug.php'; $msg =& new Mail_IMAP_Debug($connection); if ($msg->error->hasErrors()) { $msg->dump($msg->error->getErrors(TRUE)); } } // Open up a mail connection if (!$msg->connect($connection)) { echo $msg->alerts(); echo $msg->errors(); echo "<span style='font-weight: bold;'>Error:</span> Unable to build a connection."; } // Unread messages appear with LIGHTGRAY links // Read messages appear with WHITE links // If you are using an IMAP-protocol based mail server, // POP3 doesn't remember flag settings // Retrieve message count $msgcount = $msg->messageCount(); echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"> <html> <head> <title> Mail_IMAP Inbox </title> <link rel='stylesheet' type='text/css' href='IMAP.css' media='all' /> </head> <body> <div id='header'> <h1> PEAR :: Mail_IMAP </h1> </div> <div id='inboxbody'> <div id='msgcount'> {$msg->mailboxInfo['folder']}: ($msgcount) messages total. </div> <table class='msg'> <thead> <tr> <th> subject </th> <th> from </th> <th> received </th> </tr> </thead> <tbody>\n"; if ($msgcount > 0) { /* * Each message of a mailbox is numbered offset from 1 * Create the $mid (message id) and recursively gather * message information. */ for ($mid = 1; $mid <= $msgcount; $mid++) { // Get the headers $msg->getHeaders($mid); $style = ((isset($msg->header[$mid]['Recent']) && $msg->header[$mid]['Recent'] == 'N') || (isset($msg->header[$mid]['Unseen']) && $msg->header[$mid]['Unseen'] == 'U'))? 'gray' : 'black'; // Grab inline and attachment parts relevant to top level parts. // See the docs for the $msg property for more information: // http://www.smilingsouls.net/index.php?content=Mail_IMAP/msg $msg->getParts($mid); if (!isset($msg->header[$mid]['subject']) || empty($msg->header[$mid]['subject'])) { $msg->header[$mid]['subject'] = "<span style='font-style: italic;'>no subject provided</a>"; } echo " <tr>\n", " <td class='msgitem'><a href='IMAP.message_viewer.php?mid={$mid}&pid={$msg->msg[$mid]['pid']}' target='_blank' style='color: {$style};'>{$msg->header[$mid]['subject']}</a></td>\n", " <td class='msgitem'>\n", " ", (isset($msg->header[$mid]['from_personal'][0]) && !empty($msg->header[$mid]['from_personal'][0]))? '<span title="'.str_replace('@', ' at ', $msg->header[$mid]['from'][0]).'">'.$msg->header[$mid]['from_personal'][0]."</span>" : str_replace('@', ' at ', $msg->header[$mid]['from'][0]), "\n", " </td>\n", " <td class='msgitem'>".date('D d M, Y h:i:s', $msg->header[$mid]['udate'])."</td>\n", " </tr>\n", " <tr>\n", " <td colspan='3' class='msgattach'>\n"; // Show inline parts first if (isset($msg->msg[$mid]['in']['pid']) && count($msg->msg[$mid]['in']['pid']) > 0) { foreach ($msg->msg[$mid]['in']['pid'] as $i => $inid) { $fname = (isset($msg->msg[$mid]['in']['fname'][$i]))? $msg->msg[$mid]['in']['fname'][$i] : NULL; echo " Inline part: <a href='IMAP.message_viewer.php?mid={$mid}&pid=".$msg->msg[$mid]['in']['pid'][$i]."' target='_blank'>".$fname." ".$msg->msg[$mid]['in']['ftype'][$i]." ".$msg->convertBytes($msg->msg[$mid]['in']['fsize'][$i])."</a><br />\n"; } } // Now the attachments if (isset($msg->msg[$mid]['at']['pid']) && count($msg->msg[$mid]['at']['pid']) > 0) { foreach ($msg->msg[$mid]['at']['pid'] as $i => $aid) { $fname = (isset($msg->msg[$mid]['at']['fname'][$i]))? $msg->msg[$mid]['at']['fname'][$i] : NULL; echo " Attachment: <a href='IMAP.message_viewer.php?mid={$mid}&pid=".$msg->msg[$mid]['at']['pid'][$i]."' target='_blank'>".$fname." ".$msg->msg[$mid]['at']['ftype'][$i]." ".$msg->convertBytes($msg->msg[$mid]['at']['fsize'][$i])."</a><br />\n"; } } echo " </td>\n", " </tr>\n"; // Clean up left over variables // $msg->unsetParts($mid); // $msg->unsetHeaders($mid); } } else { echo " <tr>\n". " <td colspan='3' style='font-size: 30pt; text-align: center; padding: 50px 0;'>No Messages</td>". " </tr>\n"; } echo " </tbody>\n". " </table>\n". " <div id='quota'>\n". " mailbox: {$msg->mailboxInfo['user']}<br />\n"; // getQuota doesn't work for some servers if ($quota = $msg->getQuota()) { echo " Quota: {$quota['STORAGE']['usage']} used of {$quota['STORAGE']['limit']} total\n"; } echo " </div>\n". " </div>\n". " <div id='footer'>\n". " <p>\n". " © Copyright 2004 Richard York, All Rights Reserved.<br />\n". " Best viewed with <a href='http://www.mozilla.org'>Mozilla</a> and other standards-based browsers. Visit the <a href='http://www.smilingsouls.net'>Mail_IMAP</a> homepage.\n". " </p>\n". " </div>\n". " </body>\n". " </html>"; // Close the stream $msg->close(); // View errors gathered by PEAR_ErrorStack // Uncommment to see more errors. // if ($msg->error->hasErrors()) { // echo "<pre style='display: block; white-space: pre;'>\n"; // var_dump($msg->error->getErrors()); // echo "</pre>\n"; // } ?>
Copyright © 1998-2009 Richard York, All Rights Reserved.
PHP Powered XHTML 1.0 CSS
Execution time: 0.19 seconds