php - 使用 PHP imap 移动并清除 \\Seen。两者都有效,两者都无效
问题描述
好的,我给。是时候寻求帮助了。
我需要使用 imap_mail_move 或 imap_mail_copy 将当前电子邮件移动到另一个文件夹并将其标记为未读。缺少文档,我无法找到结合使用这两个功能的示例。
imap_mail_move($inbox, $uniqueID, 'to_be_processed', CP_UID);
imap_clearflag_full($inbox, imap_uid($inbox, $uniqueID), '\\Seen', ST_UID);
我确实在最后删除。除未读部分外,一切正常。一旦我移动它,我认为ID会改变?
如果我让它工作,我希望你能帮助我理解为什么?我的一个问题是,一条消息在什么时候被标记为已读?
解决方案
IMAP 仅在逐个文件夹的基础上工作。移动邮件后,它就不再位于您正在处理的文件夹中,因此您无法再操作该邮件*。因此,您需要在移动消息之前对其进行更改。只需反转您的命令:
imap_clearflag_full($inbox, $uniqueID, '\\Seen', ST_UID);
imap_mail_move($inbox, $uniqueID, 'to_be_processed', CP_UID);
另外,不要在已经是 UID 的东西上调用 imap_uid() 。
*:从技术上讲,\Deleted 副本可能保留在源文件夹中,您正在操纵它,而不是移动的消息。
推荐阅读
- pandas - 加入有几行分配给表键的数据集 - 如何防止数量重复?
- javascript - 在 ng-model 上应用 parseFloat
- c++ - 有人可以告诉我这是如何在 main() 中实现的吗?(关于 void 指针的问题)
- azure - Service Fabric 单例服务在扩展时是否会停机?
- laravel - 我的 Laravel 路线不适用于 CentOS
- nlp - 使用经过训练的 K-Means 模型为未见数据预测正确的集群
- node.js - router.get 和 app.get 有什么区别?
- javascript - 如何使用 node.js 从 API 调用中打开数据并将数据写入文件
- mule - 在 Dataweave 2.0 中用空白替换 Null
- jquery - TS2702:“JQuery”仅指一种类型,但在此处用作命名空间