如何将电子邮件移至新收件箱,并使用PHP将其UID放在该盒子中



我正在使用看起来很像这样的代码将电子邮件移至另一个收件箱:

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提供的序列集的全部灵活性。

相关内容

最新更新