我想收到附加消息的消息uid。这是代码,未经测试,肯定是错误的:
$imapStream = imap_open($imapPath,$imapUser,$imapPass);
imap_append($imapStream,$imapPath,$mail->getMailString(),"\\Seen");
$check = imap_check($imapStream);
$uid=imap_uid($imapStream,$check->Nmsgs);
imap_close($imapStream);
基本上,我在imap_append
调用之后执行的操作是imap_check
来获取消息计数,然后我将消息计数传递到imap_uid
以获取消息uid。这可能不对,但这是我第一次和imap一起工作,而我正试图解决这个问题。
非常感谢任何帮助。
答案 0 :(得分:4)
不,这是错误的 - 你有一个竞争条件,如果你在APPEND
消息和你查询消息数量之间有另一条消息到达,你会遇到竞争条件。 / p>
您可能希望使用UIDPLUS
IMAP extension(如果有),并参阅APPENDUID
响应代码。如果由于某种原因无法使用,那么您最可靠的选择是发送UID SEARCH
命令,其中包含一个条件,HEADER
匹配您刚刚附加的邮件的Message-Id
标头。如果你没有获得任何一个或多个UID,那么你就搞砸了。