gpt4 book ai didi

php - 在 IMAP 中移动电子邮件后获取新 ID

转载 作者:可可西里 更新时间:2023-11-01 14:00:50 31 4
gpt4 key购买 nike

我正在使用 PHP 中的 IMAP 函数来处理我的电子邮件并将它们导入数据库。导入后,我将每封电子邮件移动到不同的文件夹以将它们分开。

public function moveMail($mailId, $mailBox) {
return imap_mail_move($this->getImapStream(), $mailId, $mailBox, CP_UID) && $this->expungeDeletedMails();
}

移动它们后,我确定电子邮件是否相关。如果不是,我想将其移至第二个文件夹。但是,移动后,内部邮件 ID 已更改,因此我无法再移动电子邮件。

我正在寻找一种方法来获取已移动电子邮件的 ID,以便我可以第二次移动它。

有什么想法吗?

最佳答案

(这不是特定于 PHP 的,不会直接回答您的问题)

通常有两种方法:

1) UIDPLUS 扩展,如果支持,应该在 OK 响应中给出一个 COPYUID 响应。这包括复制邮件时新文件夹中的 UIDVALIDITY 和新 UID。

2) 失败时,打开一个新连接或切换到目标文件夹,并为 Message-ID header 执行 UID SEARCH。如果你得到一个单一的回应,那可能就是你的信息。如果您收到多个回复,则最高的一个可能是您的消息(假设多个客户端没有同时复制具有相同 Message-ID 的消息。)由于 Message-ID 是发件人发送的 header ,并且不一定是唯一的(消息可以重复),这是不完美的,但大多数时候都能给出合理的结果。缺点是速度慢。

幸运的是,几乎所有服务器都支持 UIDPLUS。不幸的是,PHP 库可能没有。

关于php - 在 IMAP 中移动电子邮件后获取新 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37569005/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com