我正在将邮件从收件箱文件夹移动到新文件夹。一段时间后,我需要将其中一些消息(不是全部)移到新文件夹中。问题是每次我移动一条消息时,uid都会更改。如何在不发送错误信息的情况下执行此操作?
[您正在“移动”还涉及将INSERT插入数据库以跟踪UID?如果是,请监视自动生成的PK。
如果服务器支持UIDPLUS(几乎全部支持),而您自己正在移动或复制消息,则在COPYUID响应中复制或移动新的UID时,服务器会为您提供新的UID。您需要记录下来。
来自IMAP MOVE RFC6851的示例:
C: a UID MOVE 42:69 foo
S: * OK [COPYUID 432432 42:69 1202:1229]
S: * 22 EXPUNGE
S: (more expunges)
S: a OK Done
COPYUID
响应包括目标邮箱的UIDVALIDITY
,源消息的UID集和目标消息的UID集。
[如果其他过程正在移动,则无法保证相同的消息,并且您必须根据它们的内容(例如,Message-ID标头,日期时间,哈希等)来跟踪它们。 )