このコマンドの結果を解析するには、IMAP コードを記述する必要があります。
tag FETCH 1,2,3,4 ALL
たいていの場合、このような応答が返ってきます
* 1 FETCH (FLAGS ... ) ENVELOPE ("time" "subject" ... )\r\n
* 2 FETCH (FLAGS ... ) ENVELOPE ("time" "subject" ... )\r\n
....
tag OK FETCH COMPLETE
各エンベロープがアスタリスク UID で始まり、CRLF で終わる場合も同様です。そのため、CRLF を解析ポイントとして使用できます。
問題は、一部のサーバーが IMAP 文字列リテラル、つまり {150}\r\n を使用して応答していることです。\r\n は文字列リテラルの一部であるため、解析ポイントとして使用できなくなりました。
1 つの考えとしては * UID をパースポイントとして使用するというものがありますが、誰かがそれを電子メールの件名などとして偶然使用すると、アルゴリズムが壊れてしまうので、それを行うのは悪い考えだと思います。
CRLFを使用せずにこのタイプの応答を効果的に解析する方法を教えてもらえますか? なによりもありがとうございました。
編集 - 質問を改善するために、個々の ENVELOPE を解析ポイントに基づいて独自の文字列に解析しようとしています。ここでは、ある文字列の開始と別の文字列の終わりを識別する解析ポイントが必要です。