PHP imap 分页问题

PHP imap pagination issue

提问人:chris oojer 提问时间:11/9/2023 最后编辑:chris oojer 更新时间:11/9/2023 访问量:25

问:

我正在处理我的代码,因为我想将限制设置为 20,因为我想使用 imap 从 gmail 获取 20 封电子邮件。

当我尝试这个时: <?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Load Composer's autoloader
require_once "Mail.php";
require_once "Mail/mime.php";
require_once('Mail/IMAPv2.php');

$username = '[email protected]';
$password = 'mypassword';

$server = '{imap.gmail.com:993/imap/ssl/ssl}INBOX';
$inbox = imap_open($server, $username, $password);

$test = listMessages($inbox);

print_r($test);


function listMessages($inbox) {
    $page = 1;
    $per_page = 25;
    $sort = null;
    $limit = ($per_page * $page);
    $start = ($limit - $per_page) + 1;
    $start = ($start < 1) ? 1 : $start;
    $limit = (($limit - $start) != ($per_page-1)) ? ($start + ($per_page-1)) : $limit;
    $info = imap_check($inbox);
    $limit = ($info->Nmsgs < $limit) ? $info->Nmsgs : $limit;
    $msgs = '';
    $result = '';

    
     $perPage = 25;
     $start = $page == 1 ? 0 : $page * $perPage - ($perPage - 1);
     $order = 0;
     $by = SORTDATE;


     if (is_array($sort)) {
         $order = $this->sortBy['order'][$sort[0]];
         $by = $this->sortBy['by'][$sort[1]];
     }
     $sorted = imap_sort($inbox, $by, $order);

    $mails = array_chunk($sorted, $perPage);
    $mails = $mails[$page - 1];
    print_r($mails);

    return $return;
}

?>

它将获取并显示 77,500 封电子邮件,这太多了,所以我需要减少它,这是我从从 0 到 24、25 到 48.....等数组中获取电子邮件的更简单方法。

这是我试图实现的目标:

page 1 of 5: 1-20 of 100
1: foo
2: bar
3: etc....

page 2 of 5: 21-40 of 100
21: foo
22: bar
23: etc...

您能否向我展示一个示例,当我连接到我的 gmail 收件箱时,我可以使用 imap 从 gmail 获取 20 封电子邮件?

谢谢。

PHP 电子邮件 Gmail IMAP

评论

0赞 CBroe 11/9/2023
也许是这样的事情?stackoverflow.com/a/3946888/1427878

答: 暂无答案