0

IMAP を介して電子メール アカウントを構成し、電子メールの読み取り、削除、移動などの操作を実行できるアプリケーションが 1 つあります。1 つの電子メールを削除すると、他の電子メールが削除されるという問題に直面しています。デバッグ後、2 人のユーザーが同じメール アカウントを設定しており、ページを更新せずに 2 つの異なるブラウザーからメールを削除していることがわかりました。

実際には、 imap_fetch_overviewによって返された 1 つのメール msgno を削除すると変更されますが、他のページでは古い msgno を持つ同じメールがまだ開いており、そのメールを削除すると他のメールが削除されます。

削除前後の msgno を確認 する

上記の例では、件名が「test 4」のメールを削除すると、「test 6」、「test 7」、「test 8」の msgno が変更されます。以前にメールを開いた他のユーザーが件名「test 7」のメールを削除しようとすると、実際には件名「test 8」のメールが削除されます。

メールを削除するには、msgno をパラメーターとして受け取る imap_delete 関数を使用しています。このような問題を処理する方法を手伝ってください。または、変更されない各メールの一意の識別子を取得する方法があり、その識別子を使用して、削除、移動などの IMAP 操作も実行できます。

4

1 に答える 1

1

代わりに一意の ID を使用してください。すべての PHP 関数はフラグ (FT_UID? など) を使用して、シーケンス番号の代わりに UID を使用することを示していると思います。

メッセージを削除すると、特に EXPUNGE 応答に注意を払っていない場合は、シーケンス ID が台無しになる可能性があります。

于 2015-12-07T22:14:14.813 に答える