我正在使用看起来很像这样的代码将电子邮件移至另一个收件箱:
function move_email($stream, $uid, $destination) {
$result = imap_mail_move($stream, $uid, $destination, CP_UID);
if($result) {
imap_expunge($stream);
}
return $result;
效果很好!但是我希望将来能够检索该特定的电子邮件。
我的理解是,新框中的UID可能与传递到功能的UID不同。如何从$destination
中指定的邮箱中检索电子邮件的UID?
实际上,我该如何通过UID获取电子邮件?imap_search()
有一个有前途的名称,但似乎无法通过UID返回电子邮件。
您假设新文件夹中的UID会有所不同。消息的UID仅在该文件夹中是唯一的。
当您将消息移至新文件夹时,您可以假设它将是该文件夹中的最后一个(除非同时收到一些新消息,否则让我们假设这不会发生)。鉴于此,您可以使用以下IMAP命令获取最新消息:
UID FETCH * BODY[]
IMAP中的*
表示最后一个UID(在其他情况下我们通常将其用作通配符)。在PHP中,您可能想使用iMap_fetch函数之一,然后将其传递为$sequence
。
注意:我不确定*
是否在PHP中是否有效,因为我正在阅读imap_fetch_overview()中的$sequence
的描述,并且它说:
消息序列描述。您可以使用x,y语法列举所需的消息,或用x:y语法在一个间隔内检索所有消息
没有提及*
,因此您只需要尝试一下,看看它是否有效。如果您不允许您使用IMAP提供的序列集的全部灵活性。