如何使用PHP中的IMAP从收件箱中获取最近的最后一封电子邮件

时间:2016-12-26 03:36:02

标签: php imap

我想在php中使用IMAP从收件箱中收到最近的最后一封电子邮件。请帮我。我不知道如何从收件箱中收到最后一封电子邮件。请指导我。我将感谢您的指导。

这是我的代码

              set_time_limit(4000); 

                // Connect to gmail
                    $hostname = '{imap.gmail.com:993/ssl/novalidate-cert}[Gmail]/All Mail';
                    $username = 'myemail@gmail.com';
                    $password = 'mypassword';
                    $keyword  = 'Delivery to the following recipient failed permanently';

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

                 $emails = imap_search($inbox,'BODY "'.$keyword.'"', SE_FREE, "UTF-8");
                $output = '';

                foreach($emails as $mail) {

                    $headerInfo = imap_headerinfo($inbox,$mail);

                    $output .= $headerInfo->subject.'<br/>';
                    $output .= $headerInfo->toaddress.'<br/>';
                    $output .= $headerInfo->date.'<br/>';
                    $output .= $headerInfo->fromaddress.'<br/>';
                    $output .= $headerInfo->reply_toaddress.'<br/>';

                    $emailStructure = imap_fetchstructure($inbox,$mail);

                    if(!isset($emailStructure->parts)) {
                         $output .= imap_body($inbox, $mail, FT_PEEK).'<br/></br/><br/>';

                    } else {
                        //    
                    }
                   echo $output;
                   $output = '';
                }

1 个答案:

答案 0 :(得分:1)

使用imap_search函数,没有选项可以指定应返回的条目数。

在您的代码中,您正在使用

foreach($emails as $mail) {

这里最简单的解决方案是仅使用数组的第一个元素,它代表符合搜索条件的最新消息。

$mail = $emails[0];

修改

我猜数组的顺序是相反的,所以使用end得到最后一个元素而不是第一个元素。

$mail = end($emails);