如何使用PHP将电子邮件移动到新收件箱并在该收件箱中获取其UID?

如何使用PHP将电子邮件移动到新收件箱并在该收件箱中获取其UID?,php,email,imap,uid,Php,Email,Imap,Uid,我正在使用类似以下代码将电子邮件移动到另一个收件箱: function move_email($stream, $uid, $destination) { $result = imap_mail_move($stream, $uid, $destination, CP_UID); if($result) { imap_expunge($stream); } return $result; 很好!但我希望将来能够检索到那封特定的电子邮件 我的理解是

我正在使用类似以下代码将电子邮件移动到另一个收件箱:

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\u search()
有一个很有前途的名称,但它似乎无法通过UID返回电子邮件。

您正确地假设新文件夹中的UID将不同。邮件的UID仅在该文件夹中是唯一的

当您将邮件移动到新文件夹时,您可能会假设它将是该文件夹中的最后一封邮件(除非同时收到一些新邮件,但我们假设不会发生这种情况)。因此,您可以使用以下IMAP命令获取最新消息:

UID FETCH * BODY[]
IMAP中的
*
表示最后一个UID(不直观,因为我们通常在其他场景中将其用作通配符)。在PHP中,您可能希望使用一个imap_fetch函数,并将“*”作为
$sequence
传递

注意:我不确定
*
是否能在PHP中实际工作,因为我正在阅读中对
$sequence
的描述,它说:

消息序列描述。您可以使用X、Y语法枚举所需的消息,或者使用X:Y语法检索间隔内的所有消息


没有提到
*
,所以您只需尝试一下,看看它是否有效。如果PHP不允许您使用IMAP提供的序列集的全部灵活性,那么它将是一个相当大的限制。

嗯,除非服务器支持UIDPLUS,否则您无法知道目标UID。但是我不知道PHP函数。您还希望fetch通过UID获取消息。