代码之家  ›  专栏  ›  技术社区  ›  splattne

IMAP文件夹/邮件同步策略?

  •  5
  • splattne  · 技术社区  · 17 年前

    我即将添加 IMAP电子邮件集成 commercial library

    (我必须展示应用不同标准的数据)。

    我们的数据库模式基本上包含一个“文件夹”和一个“电子邮件”表。“电子邮件”表主要包含标头信息,如“FromAddress”、“FromName”、“IsRead”、“Is Answered”、“IshForwarded”、”HasAttachments”等。 ( 没有

    1. 首次获取所有邮件(或在用户重新组织文件夹后)

    谢谢!

    1 回复  |  直到 17 年前
        1
  •  2
  •   Dave Swersky    17 年前

    更好的UniqueId支持:我们已添加 在消息中返回UniqueId DataTable用于返回IMAP 服务器。

    以及:

    • 将邮件标记为已读/取消标记

    在我看来,你的库拥有保持SQL服务器同步所需的所有支持。您可以通过编程将消息标记为已读,并且库仅支持检索新消息。这就解决了你的第二个问题。

    你的策略将部分取决于你的解决方案是如何运作的。如果我正确阅读了你的问题,从同步的角度来看,你的用户在IMAP服务器上管理他们的电子邮件,你的SQL server已“订阅”IMAP服务器。

    如果这是正确的,那么同步实际上是一项后台任务。我的方法是在逐个用户的基础上使用事件模型进行同步。如果可能,当用户有活动(新的/删除的电子邮件)时,“通知”同步程序。将同步“作业”添加到将作业批量同步在一起的后台进程中。通知模型将确保同步程序仅适用于需要同步的用户。

    新的/删除的小型电子邮件同步作业会转到一个“处理器”,而像完全重新同步和文件夹重组这样的大型作业会转到另一个“处理程序”。为了保持较高的整体吞吐量,可能必须拆分真正大的重新同步作业。“小作业”和“大作业”处理器可能是两种不同的服务,也可能是两个不同的线程,具体取决于性能和设计考虑。