gpt4 book ai didi

email - IMAP 文件夹/消息同步策略?

转载 作者:行者123 更新时间:2023-12-01 04:22:25 25 4
gpt4 key购买 nike

我要加 IMAP 电子邮件集成 到我们的 Web 应用程序之一 (ASP.NET/SQL Server)。我已经在使用 commercial library它公开了最重要的 IMAP 功能:获取文件夹列表、获取消息标题、获取 mime 消息等)

从 IMAP 服务器“实时”获取电子邮件数据非常有效。但这是一项艰巨的任务:我必须保留电子邮件/文件夹 缓存 SQL 数据库同步到 IMAP 服务器 (我必须显示应用不同标准的数据)。

我们的数据库模式本质上包含一个“文件夹”和一个“电子邮件”表。 “Emails”表主要包含标题信息,如“FromAddress”、“FromName”、“IsRead”、“IsAnswered”、“IsForwarded”、“HasAttachments”等( 没有 电子邮件内容或附件)。

我必须考虑两个主要场景:

  • 第一次(或在用户重新组织文件夹后)获取所有邮件
  • 获取新的/最近的消息

  • 考虑到性能是一个主要的设计标准(我不能在每次连接时查询/比较数千条消息,以便找到如果用户移动或删除了一些旧电子邮件,则退出)。

    谢谢!

    最佳答案

    从您图书馆的功能列表中:

    Better UniqueId Support: We've added even more options for requesting a message's unique id. You can now return the UniqueId in a message's DataTable for return trips to the IMAP server.



    和:

    • Retrieve only New Messages
    • Search Flagged Messages
    • Mark/Unmark Messages as Read


    在我看来,您的库似乎拥有保持 SQL 服务器同步所需的所有支持。您可以以编程方式将消息标记为已读,并且该库仅支持检索新消息。这照顾你的第二个项目。

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

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

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

    关于email - IMAP 文件夹/消息同步策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/603106/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com