3

追加したメッセージのメッセージ 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 を使用したのはこれが初めてで、これを理解しようとしています。

どんな助けでも大歓迎です。

4

1 に答える 1

4

APPENDいいえ、これは間違っています。メッセージを編集してからメッセージ数を参照するまでの間に別のメッセージが到着した場合にヒットする競合状態があります。

UIDPLUS利用可能な場合はIMAP 拡張機能を使用し、APPENDUID応答コードを調べてください。何らかの理由でこれが利用できない場合、最も信頼できる方法は、追加したばかりのメッセージのヘッダーに一致UID SEARCHする 1 つの条件でコマンドを送信することです。UID が 1 つも返されないか、1 つしか返されない場合は、失敗です。HEADERMessage-Id

于 2013-05-30T12:45:24.497 に答える