[英]Retrieve the 3 most recent email using imap and php
I'm trying to figure out how to get the latest 3 emails (SEEN and UNSEEN) using imap and php.我想弄清楚如何使用 imap 和 php 获取最新的 3 封电子邮件(已见和未见)。 It need to be ressource-efficient since the mailbox as 1 000 emails inside.由于邮箱内部有 1000 封电子邮件,因此需要资源高效。 Getting all header may need too much ressources I think.我认为获取所有标题可能需要太多资源。
I just need the sender, the subject and the date...我只需要发件人、主题和日期...
Any idea?任何的想法? Thanks for any syggestion/help/explaination/hint...感谢您的任何syggestion/帮助/解释/提示...
I did it like that:我是这样做的:
$mbox = imap_open("{imap.myconnection.com:993/imap/ssl}INBOX", "username", "password");
// get information about the current mailbox (INBOX in this case)
$mboxCheck = imap_check($mbox);
// get the total amount of messages
$totalMessages = $mboxCheck->Nmsgs;
// select how many messages you want to see
$showMessages = 5;
// get those messages
$result = array_reverse(imap_fetch_overview($mbox,($totalMessages-$showMessages+1).":".$totalMessages));
// iterate trough those messages
foreach ($result as $mail) {
print_r($mail);
// if you want the mail body as well, do it like that. Note: the '1.1' is the section, if a email is a multi-part message in MIME format, you'll get plain text with 1.1
$mailBody = imap_fetchbody($mbox, $mail->msgno, '1.1');
// but if the email is not a multi-part message, you get the plain text in '1'
if(trim($mailBody)=="") {
$mailBody = imap_fetchbody($mbox, $mail->msgno, '1');
}
// just an example output to view it - this fit for me very nice
echo nl2br(htmlentities(quoted_printable_decode($mailBody)));
}
imap_close($mbox);
PHP-Ref IMAP: http://php.net/manual/en/ref.imap.php PHP-Ref IMAP: http : //php.net/manual/en/ref.imap.php
Regards Dominic问候多米尼克
What about关于什么
imap_search($res, 'RECENT');
? ?
http://php.net/manual/en/function.imap-search.php http://php.net/manual/en/function.imap-search.php
$msgnos = imap_search($mbox, "UNSEEN", SE_UID);
$i=0;
foreach($msgnos as $msgUID) {
$msgNo = imap_msgno($mbox, $msgUID);
$head = imap_headerinfo($mbox, $msgNo);
$mail[$i][] = $msgUID;
$mail[$i][] = $head->Recent;
$mail[$i][] = $head->Unseen;
$mail[$i][] = $head->from[0]->mailbox."@".$head->from[0]->host;
$mail[$i][] = utf8_decode(imap_utf8($head->subject));
$mail[$i][] = $head->udate;
}
return $mail;
imap_close($mbox);
Will do the job.会做这项工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.