0

FETCH コマンドで確認すると、次のようになります。

2148 FETCH (UID 2159 INTERNALDATE "06-Nov-2013 06:36:15 +0000" RFC822.SIZE 3702 ENVELOPE ("Wed, 6 Nov 2013 12:06:39 +0530" {19} Reg: "試験対象" ( ("karthick kumar" NIL "ngkarthick" "aroxo.com")) (("karthick kumar" NIL "ngkarthick" "aroxo.com")) (("karthick kumar" NIL "ngkarthick" "aroxo.com")) ((NIL NIL "phpkarthick" "gmail.com")) NIL NIL NIL ""))

フェッチ コマンドに不要な {19} があります

4

2 に答える 2

1

{19} の後に aCRLFが続くものをリテラルと呼びます。次の 19 文字は、追加の解釈なしで読み取ってフェッチする必要があることを示しています。これらは IMAP プロトコルの一部であり、難しい文字を含む文字列を転送する方法の 1 つです。それらは独自の CRLF を持つ傾向があるため、通常は本文の送信に使用されます。

この場合、サーバーはサブジェクトをこのように転送することを決定したため、プロトコルにとって重要な引用符をエスケープする必要はありません。

ライブラリが完全にプロトコルに準拠していない可能性がありますか?

于 2013-11-12T15:04:50.137 に答える
0

私はいくつかのパターンの置き換えを行うことでこの問題を解決し、正常に解決してすべてのメールを取得しました。以下は、これを達成するのに役立つ私のコードです

このコードを fMailbox.php の行の後に追加してください

$output = 配列(); 1117番線付近

    $response = $this -> write('FETCH ' . $messages . ' (UID INTERNALDATE RFC822.SIZE ENVELOPE)');
    $hintter = implode(' ', $response);
    $pattern = '(\{[0-9]+\})';

    if (preg_match($pattern, $hintter, $match)) {

        $responses = preg_replace($pattern, '', $response);
        $responsesnew = array();
        $i = 0;
        $j = 0;
        foreach ($responses as $reps) {

            if (substr(trim($reps), 0, 1) != '*') {
                $responsesnew[$i] = $responses[$j - 1] . $reps;
                $i++;
            }

            $j++;

        }
    } else {
        $responsesnew = $response;
    }

foreach パラメータを次のように変更します。

foreach ($responsesnew as $line) 

から

 foreach ($responsesnew as $line) 
于 2014-11-10T10:33:57.713 に答える