2

我正在使用 spring 的 imap 机制来从我的帐户接收电子邮件到我的服务器。

这就像一个魅力。

无论如何,一个新的要求出现了——我将不得不收听多个帐户,而不是收听单个电子邮件帐户。

我尝试为每个帐户创建一个新频道。有用!

问题是我添加的每个频道都意味着一个新线程正在运行。
因为我在谈论大量帐户,所以这是一个安静的问题。

我的问题是:

由于所有电子邮件帐户(我想听)都在同一个域中,即:acount1@myDomain.com acount2@myDomain.com acount3@myDomain.com ....

是否可以创建具有多个帐户的单个频道?

除了定义 N 个新频道之外,我还有其他选择吗?

谢谢。尼尔

4

1 回答 1

4

我假设您的意思是通道适配器,而不是通道(多个通道适配器可以将消息发送到同一个通道)。

不,您不能对多个帐户使用单个连接。

这是底层 Internet 邮件协议的限制。

如果您使用 imap 空闲适配器,是的,这将无法很好地扩展,因为它需要每个线程。但是,如果您只谈论几十个帐户,这可能不是问题。对于更多数量的帐户,使用轮询适配器可能会更好。

但是,即便如此,除非是固定数量的帐户,否则配置可能会很繁琐(但您可以通过编程方式启动新的适配器)。

对于像这样的复杂场景,您可能需要考虑编写自己的“适配器”,直接使用 JavaMail API 并以更复杂的方式管理连接(但您仍然需要为每个帐户单独连接)。它不必是“真正的”适配器,只需一个与 JavaMail 交互的 POJO。然后,当您收到来自其中一个帐户的消息时,将其发送到使用<gateway/>.

于 2013-07-31T13:24:34.610 回答