1

私はNettyを初めて使用し、単純なSMTPサーバーを構築しようとしています。私が遭遇した問題は、ほとんどのSMTPサーバーコマンドがmessageReceived()メソッドで簡単に読み取れる1行で構成されていることです。ただし、クライアントから1行のコマンドを多数受信した後、電子メールの「データ」部分には任意の数の行を含めることができます。これは短いメールでは問題なく機能しますが、長いメールではデータの一部しか得られない可能性があります。私の理解では、これは現在パイプラインにフレームデコーダーがないためです。

私が抱えている問題は、単一行のコマンドが改行で区切られているのに、「データ」セクションが「。」で終わる任意の数行で構成されていることです。独自のラインで。

特殊文字シーケンスで終了する単一行コマンドと複数行要求の両方で機能するフレームデコーダーを作成することは可能ですか?

ありがとう!

ダスティン

4

2 に答える 2

1

Apache James は SMTP に Netty を使用しているため、その方法を確認してください: http://svn.apache.org/viewvc/james/server/trunk/protocols-smtp/src/main/java/org/apache/ジェームス/smtpserver/netty/

于 2012-05-29T03:23:44.443 に答える
1

両方のジョブを実行するために必ずしも 1 つのデコーダーが必要なわけではありません。ヘッダー用とデータ部分用の 2 つのデコーダーを作成できます。ヘッダー部分が完成したら、パイプラインへの参照を取得し、「ヘッダー デコーダー」を削除して「データ デコーダー」を追加します。それが完了したら、パイプラインを元の構成にリセットして続行します。

于 2012-05-29T13:45:32.710 に答える