基于消息UID的PHP imap_搜索
是否有任何方法可以使用IMAP_搜索功能在IMAP服务器上搜索邮件。根据php手册,imap_搜索只允许有限数量的搜索选项,按UID搜索不在两者之间:基于消息UID的PHP imap_搜索,php,email,imap,Php,Email,Imap,是否有任何方法可以使用IMAP_搜索功能在IMAP服务器上搜索邮件。根据php手册,imap_搜索只允许有限数量的搜索选项,按UID搜索不在两者之间: 那么,有没有办法根据UID(高于提供的UID)获取消息呢。自从IMAP4协议修订以来(我想是从2003年开始),这应该得到支持。我相信您已经进行了广泛的搜索,并最终在这里登陆。让我们面对它,这是不可能的;但该功能也有解决办法 也许您可以使用类似的代码: $imap_stream = imap_open($mailbox, $username,
那么,有没有办法根据UID(高于提供的UID)获取消息呢。自从IMAP4协议修订以来(我想是从2003年开始),这应该得到支持。我相信您已经进行了广泛的搜索,并最终在这里登陆。让我们面对它,这是不可能的;但该功能也有解决办法 也许您可以使用类似的代码:
$imap_stream = imap_open($mailbox, $username, $password);
$msg_no = 1212; //lets say momentarily
while(imap_fetchheader($imap_stream, $msg_no)){
//do some processing
$msg_no++;
}// loop will continue till there is no more of newer messages
请注意,这可能会导致执行时间最长,因此您可以使用for循环来执行具有特定迭代次数的作业
$imap_stream = imap_open($mailbox, $username, $password);
$msg_no = 1212; //lets say
for($i=0;$i<=50;$i++){
if(imap_fetchheader($imap_stream, $msg_no)){
//do some processing
}
$msg_no++;
} // this will go for 50 times
$imap\u stream=imap\u open($mailbox、$username、$password);
$msg_no=1212//比方说
对于($i=0;$i我确信您已经进行了广泛的搜索并最终在这里登陆。让我们面对现实吧,这是不可能的;但是可以为该功能找到解决方法
也许您可以使用类似的代码:
$imap_stream = imap_open($mailbox, $username, $password);
$msg_no = 1212; //lets say momentarily
while(imap_fetchheader($imap_stream, $msg_no)){
//do some processing
$msg_no++;
}// loop will continue till there is no more of newer messages
请注意,这可能会导致执行时间最长,因此您可以使用for循环来执行具有特定迭代次数的作业
$imap_stream = imap_open($mailbox, $username, $password);
$msg_no = 1212; //lets say
for($i=0;$i<=50;$i++){
if(imap_fetchheader($imap_stream, $msg_no)){
//do some processing
}
$msg_no++;
} // this will go for 50 times
$imap\u stream=imap\u open($mailbox、$username、$password);
$msg_no=1212;//假设
对于($i=0;$i问题是此代码使用的消息序列号在消息被删除或移动时可能会更改。因此,如果您在最后一条消息处理时存储$msg_no,则会删除5条消息,您将错过接下来到达的5条消息。如果您只希望从最后一条消息中获取消息,则需要存储其UID,然后执行$msg\u no=imap\u msgno($imap\u stream,$lastUID)
@CodeBaller是的,这似乎更好。同意。问题是,此代码使用的消息序列号在消息被删除或移动时可能会发生变化。因此,如果您在最后一条消息处理时存储$msg_no,那么5条消息被删除,您将错过接下来到达的5条消息。如果您只希望从最后一条消息中获取消息,yo你需要存储它的UID,然后执行$msg\u no=imap\u msgno($imap\u stream,$lastUID);
@CodeBaller是的,看起来更好。同意。