2

主な質問

imap_mail_moveカスタムIMAPクラス(XAMPPでローカルでテスト/使用)を構築していますが、何らかの理由で、フラグ付きのUIDを保持しようとしているときに関数を使用したい場合CP_UID、メッセージが動かないようです。ただし、フラグを削除すると完全に機能します。

以下の関数を呼び出します。

return @imap_mail_move($this->stream, $messageNumber, $folder, CP_UID);

IMAPは正常に接続されています(ただし、常にSECURITY PROBLEM: insecure server advertised AUTH=PLAIN (errflg=1)0行目でエラーが発生し、メッセージ番号とフォルダーへの移動が正しく定義されています。

削除する@と、それが機能しない理由についての手がかりが明らかになりor die('error!')ません。最後に追加する場合も同様です。機能しているようですが、何もしません。

クラスのDestruct関数は、以下のように存在します(したがって、IMAP接続を閉じて消去します)。

@imap_close($this->stream, CL_EXPUNGE);

その他のIMAPの質問

処理、カスタム処理、検索などを高速化するために、すべての電子メールをMySQLデータベースに保存します。ただし、Outlook(など)内でメッセージを移動すると、いくつかの問題が発生する可能性があることに気付きました。

メッセージのUIDを更新する最良の方法は何ですか?これはデータベースに保存してすばやくアクセスできるためですが、メッセージが移動した場合は変更できます。message numbers/UIDまたは、電子メールを移動/削除/フラグを立てるときに取得するために、よりユニークなものを使用して使用するためのより良い機能はありますか?私は当初、UIDは変更されないと思っていましたが( http://www.php.net/manual/en/function.imap-uid.phpを信じるように)、実際には変更されているようです。

また、メッセージを移動した後に新しいUIDを取得することは可能ですか?

4

1 に答える 1

1

CP_UID は、$messageNumber に UID が含まれ、sequenceNumber が含まれていないことのみを示します。エラーメッセージは、メールの移動には関係ないと思います。パスワードがプレーンテキストとして送信されるセキュリティ上の問題のみが記載されています。

古い UID を保持することはできません。各メールボックスには独自の UID があります。UID はメールボックス間で一意ではありません (同じメールボックス内のみ)。自分自身に UID を割り当てることもできないと思います (確かに PHP を直接指定することはできません)。

あとは、私もあなたと同じ状況です。

現在、 http://www.php.net/manual/en/function.imap-status.phpの使用を考えています。この関数を使用すると、次に計画されている UID を取得できます。ただし、2 人のユーザーが同時に同じメールボックスでメールを移動すると、問題が発生する可能性があります。

誰かが Outlook などのサードパーティ クライアントから電子メールを移動するたびに、データベースを更新する方法もわかりません。

于 2012-10-23T23:41:36.107 に答える