提问人:chris oojer 提问时间:11/9/2023 最后编辑:chris oojer 更新时间:11/9/2023 访问量:25
PHP imap 分页问题
PHP imap pagination issue
问:
我正在处理我的代码,因为我想将限制设置为 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 封电子邮件?
谢谢。
答: 暂无答案
评论