예제 #1
0
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;
}
예제 #2
0
    $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";
            //'