如何确定通过APPEND邮箱添加的邮件的UID ?通过STATUS我可以预先得到下一个值的预测,然后我可以SEARCH,但依赖于这些会引入竞争条件,因为这些命令之间可能添加了其他消息.
如果您的IMAP服务器支持UIDPLUS,您将始终获得APPENDUID响应.这将包含UID和UID的有效期.
RFC 4315的示例语法:
S: A003 OK [APPENDUID 38505 3955] APPEND completed
Run Code Online (Sandbox Code Playgroud)
如果您的邮件服务器不支持UIDPLUS,FETCH一旦您的追加操作完成,您将不得不为UID 做一个.如果您确定在追加后没有添加任何消息,请在FETCH响应中查找最后一条消息.
FETCH 1:* (UID)
Run Code Online (Sandbox Code Playgroud)
如果您担心添加其他消息,可以在之前保存IMAP标头(如Message-ID),然后APPEND在FETCH操作中使用它.