Spring集成imap - 来自同一域的多个电子邮件帐户

时间:2013-07-31 12:17:13

标签: spring imap spring-integration

我正在使用spring的imap机制,以便将我帐户中的电子邮件发送到我的服务器。

这就像一个魅力。

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

我尝试为每个帐户创建一个新频道。它工作!

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

我的问题是:

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

是否可以创建包含多个帐户的单个渠道?

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

感谢。 尼尔

1 个答案:

答案 0 :(得分:3)

我认为你的意思是通道适配器,而不是通道(多通道适配器可以向同一通道发送消息)。

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

这是对基础互联网邮件协议的限制。

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

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

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