【问题标题】:php imap retrieve only the oldest emailphp imap 只检索最旧的电子邮件
【发布时间】:2013-07-16 17:16:20
【问题描述】:

早安,

我正在尝试仅检索与我的 imap_search 匹配的最旧电子邮件。 所以我需要摆脱 foreach 循环。 我已经尝试删除它,但没有奏效。

代码:

<?php
/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = '**';
$password = '**';

/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

/* grab emails, voeg hier extra search opties in bijv: SUBJECT "wat er in het onderwerp moet staan" From "email.van.herkomst@example.com" */
$emails = imap_search($inbox,'UNSEEN SUBJECT "Task has succeeded"');

/* if emails are returned, cycle through each... */
if($emails) {

    /* begin output var */
    $output = '';

    /* for every email... */
    if($emails as $email_number) {

        /* get information specific to this email */
        $overview = imap_fetch_overview($inbox,$email_number,0);
        $message = imap_fetchbody($inbox,$email_number,2);

        /* output the email header information */
        $output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">';
        $output.= '<span class="subject">'.$overview[0]->subject.'</span> ';
        $output.= '<span class="from">'.$overview[0]->from.'</span>';
        $output.= '<span class="date">on '.$overview[0]->date.'</span>';
        $output.= '</div>';

        /* output the email body */
        $output.= '<div class="body">'.$message.'</div>';
    }
    echo $output;
}

/* close the connection */
imap_close($inbox);
?>

亲切的问候, 拉尔斯·卡普坦

【问题讨论】:

    标签: php imap gmail-imap


    【解决方案1】:

    由于 imap_search 返回一个数组,你可以使用常规的数组函数:

    $emails = imap_search($inbox,'UNSEEN SUBJECT "Task has succeeded"');
    $last = array_pop($emails);
    $overview = imap_fetch_overview($inbox,$last,0);
    $message = imap_fetchbody($inbox,$last,2);
    $output = '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">';
    $output.= '<span class="subject">'.$overview[0]->subject.'</span> ';
    $output.= '<span class="from">'.$overview[0]->from.'</span>';
    $output.= '<span class="date">on '.$overview[0]->date.'</span>';
    $output.= '</div>';
    $output.= '<div class="body">'.$message.'</div>';
    echo $output;
    

    【讨论】:

    • 我还是得用$output = '';
    • 但是这真的很有帮助:D
    • 不客气。我更新了代码,这样第一个 $output 就只有=
    猜你喜欢
    • 2011-10-31
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多