我正在使用看起来很像这样的代码将电子邮件移动到另一个收件箱:
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返回电子邮件。
答案 0 :(得分:1)
您认为新文件夹中的UID会有所不同。邮件的UID仅在该文件夹中是唯一的。
当您将邮件移动到新文件夹时,您可能会认为它将是该文件夹中的最后一个文件夹(除非同时收到一些新邮件,但我们假设这不会发生) 。鉴于此,您可以使用以下IMAP命令获取最新消息:
UID FETCH * BODY[]
IMAP中的*
表示最后一个UID(不直观,因为我们通常在其他情况下将其用作通配符)。在PHP中,您可能希望使用其中一个imap_fetch函数,并将“*”作为$sequence
传递。
注意:我不确定*
是否真的可以在PHP中使用,因为我正在imap_fetch_overview()中阅读$sequence
的说明,并说:
消息序列描述。您可以使用X,Y语法枚举所需的消息,或使用X:Y语法检索区间内的所有消息
没有提到*
,所以你只需要尝试一下,看看它是否有效。如果它不允许您使用IMAP提供的序列集的完全灵活性,那将是PHP的一个相当大的限制。