如何在 PHP 中使用 IMAP 从收件箱中获取最近的最后 1 封电子邮件
How to get recent last 1 email from inbox with IMAP in PHP
我想在 php 中使用 IMAP 从收件箱中获取最近的最后 1 封电子邮件。请帮我。我不知道如何从收件箱中获取最后一封电子邮件。请指导我。我会感谢你的指导。
这是我的代码
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 = '';
}
使用 imap_search
函数时,没有指定应返回的条目数的选项。
在您的代码中,您正在使用
foreach($emails as $mail) {
此处最简单的解决方案是仅使用数组的第一个元素,它表示满足搜索条件的最新消息。
$mail = $emails[0];
编辑
我猜数组是倒序的,所以获取最后一个元素而不是第一个 - 使用 end
.
$mail = end($emails);
我想在 php 中使用 IMAP 从收件箱中获取最近的最后 1 封电子邮件。请帮我。我不知道如何从收件箱中获取最后一封电子邮件。请指导我。我会感谢你的指导。
这是我的代码
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 = '';
}
使用 imap_search
函数时,没有指定应返回的条目数的选项。
在您的代码中,您正在使用
foreach($emails as $mail) {
此处最简单的解决方案是仅使用数组的第一个元素,它表示满足搜索条件的最新消息。
$mail = $emails[0];
编辑
我猜数组是倒序的,所以获取最后一个元素而不是第一个 - 使用 end
.
$mail = end($emails);