【问题标题】:Multiple IMAP connections for multiple users多个用户的多个 IMAP 连接
【发布时间】:2019-08-10 18:14:08
【问题描述】:

我正在寻找建立一个 CRM 并且我需要同步多个用户的电子邮件。所以,我的问题是如何管理多个连接。我看到我们可以使用 IMAP IDLE 让单个用户在电子邮件到达时收到通知,但我需要有数百个连接,不同线程中的数百个连接会起作用吗?另外,我怀疑电子邮件服务器是否会允许来自单个 IP 的那么多连接。 此外,关于 GMAIL,它们提供了一个 REST API,但它们也对允许的最大连接数有限制。那么,如何为所有用户同步电子邮件?

如果您能指出我正确的方向,那就太好了。 谢谢。

【问题讨论】:

    标签: email smtp imap gmail-api gmail-imap


    【解决方案1】:

    来自单个 IP 地址的数百个 IMAP 连接并不少见;在许多办公室中,整个办公室网络的出站网关看起来(实际上是)一个外部 IP 地址。

    挑战主要是跟踪代码中的这么多连接。

    IDLE 在这里可能是一个好主意,但是为了让您的代码能够抵御网络中断,您还必须为 IDLE 会话间歇性断开做好准备。因此,只需构建您的程序以在必要时重新连接。然后,如果您发现您的连接数超出了服务器的处理能力,将代码更改为始终或定期断开连接将是一个相对简单的更改。

    为了比较,想想繁忙的网络服务器必须管理的连接数。这些是忙碌的连接;你的大部分时间都在睡觉。 (不过,如果您希望扩展到数万个并发连接,您可能必须小心;操作系统有一个可以调整的限制,但不是无限的。)

    【讨论】:

    • 嗯,谷歌搜索了一下,我想如果它们不是全部到同一个远程并且你有足够的内存,你可以在单个服务器上维持数十万个出站 TCP 连接。
    • 感谢您的回复。所以,基本上有那么多连接没有问题,但我需要确保系统可以处理那么多连接,如果有任何连接断开,我需要重新连接。好吧,你知道有什么开源项目这样做,所以我可以参考一下吗?
    • 有一些 Python IMAP IDLE 解决方案,但我没有时间玩弄它们。唉,标准imaplib 仍然缺乏支持。尽管据称学习曲线很长,但这应该是 Twisted 擅长的事情。
    • 我正在浏览twisted.mail,但它似乎不支持IDLE。
    • Twisted 的吸引力稍差,因为 Python 本身有 async,但它是一个成熟的包,有许多经过良好测试的附加组件。这是 Twisted 中 IDLE 的一次尝试,但我似乎很老:jdb.github.io/imap_idle/twisted_imap.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 2011-11-01
    • 1970-01-01
    相关资源
    最近更新 更多