function fetch_senders_and_recipients($connection, $mailbox, $count) { $selectresult = handmadeimap_select($connection, $mailbox); if (!handmadeimap_was_ok()) { die("SELECT failed: " . handmadeimap_get_error() . "\n"); } $totalcount = $selectresult['totalcount']; $startindex = $totalcount - $count; $endindex = $totalcount; $fetchresult = handmadeimap_fetch_envelopes($connection, $startindex, $endindex); if (!handmadeimap_was_ok()) { die("FETCH failed: " . handmadeimap_get_error() . "\n"); } $addresslist = array('from' => array(), 'to' => array(), 'cc' => array(), 'bcc' => array()); $addresstodisplay = array(); foreach ($fetchresult as $envelope) { $from = $envelope['from']; $fromcomponents = $from[0]; $fromaddress = $fromcomponents['address']; $fromdisplay = $fromcomponents['display']; $addresstodisplay[$fromaddress] = $fromdisplay; $addresslist['from'][] = $fromaddress; foreach ($envelope['to'] as $tocomponents) { $toaddress = $tocomponents['address']; $todisplay = $tocomponents['display']; $addresstodisplay[$toaddress] = $todisplay; $addresslist['to'][] = $toaddress; } foreach ($envelope['cc'] as $cccomponents) { $ccaddress = $cccomponents['address']; $ccdisplay = $cccomponents['display']; $addresstodisplay[$ccaddress] = $ccdisplay; $addresslist['cc'][] = $ccaddress; } foreach ($envelope['bcc'] as $bcccomponents) { $bccaddress = $bcccomponents['address']; $bccdisplay = $bcccomponents['display']; $addresstodisplay[$bccaddress] = $bccdisplay; $addresslist['bcc'][] = $bccaddress; } } $addresscounts = array('from' => array_count_values($addresslist['from']), 'to' => array_count_values($addresslist['to']), 'cc' => array_count_values($addresslist['cc']), 'bcc' => array_count_values($addresslist['bcc'])); $result = array(); foreach ($addresscounts as $role => $countmap) { $result[$role] = array(); foreach ($countmap as $address => $count) { $result[$role][$address] = array('count' => $count, 'display' => $addresstodisplay[$address]); } } return $result; }
$port = $imapinfo['port']; $protocol = $imapinfo['protocol']; $sendyahoocommand = $imapinfo['sendyahoocommand']; } pete_start_timer(); if ($protocol == 'imaps') { $mailserver = "ssl://{$host}"; $connection = create_imap_connection($mailserver, $port, $sendyahoocommand, $user, $password); if ($action == 'list') { $listresult = handmadeimap_list($connection); if (!handmadeimap_was_ok()) { die("LIST failed: " . handmadeimap_get_error() . "\n"); } exit; } $selectresult = handmadeimap_select($connection, $mailbox); if (!handmadeimap_was_ok()) { die("SELECT failed: " . handmadeimap_get_error() . "\n"); } if ($action == 'totalcount') { $totalcount = $selectresult['totalcount']; echo $totalcount; } else { if ($action == 'fetchheaders') { $fetchresult = handmadeimap_fetch_envelopes($connection, $startindex, $endindex); if (!handmadeimap_was_ok()) { die("FETCH failed: " . handmadeimap_get_error() . "\n"); } $messagexml = envelopes_to_xml($fetchresult, 'received'); print '<?xml version="1.0" encoding="ISO-8859-1"?><messagelist>' . "\n"; //'