1

我是 Netty 的新手,我正在尝试构建一个简单的 SMTP 服务器。我遇到的问题是大多数 SMTP 服务器命令都由一行组成,在 messageReceived() 方法中很容易阅读。但是,在从客户端接收到多个单行命令后,电子邮件的“数据”部分可以包含任意数量的行。这适用于短电子邮件,但较长的电子邮件可能只会产生部分数据。我的理解是,这是因为我现在在管道中没有任何帧解码器。

我遇到的问题是单行命令用换行符分隔,但“数据”部分由任何以“。”结尾的数字行组成。在自己的线上。

是否可以创建一个适用于单行命令和以特殊字符序列终止的多行请求的帧解码器?

谢谢!

达斯汀

4

2 回答 2

1

Apache James 将 Netty 用于 SMTP,因此您可能想看看他们是如何做到的:http: //svn.apache.org/viewvc/james/server/trunk/protocols-smtp/src/main/java/org/apache/詹姆斯/smtpserver/netty/

于 2012-05-29T03:23:44.443 回答
1

您不一定需要一个解码器来完成这两项工作。您可以创建两个解码器,一个用于标头,一个用于数据部分。完成标头部分后,获取对管道的引用,删除“标头解码器”并添加“数据解码器”。完成后,将管道重置为原始配置并继续。

于 2012-05-29T13:45:32.710 回答