imap能和服务器同步文件夹吗,电子邮件 – IMAP文件夹/邮件同步策略?
我即将将IMAP电子邮件集成添加到我们的一个Web应用程序(ASP.NET / SQL Server)中.我已经在使用
commercial library,它公开了最重要的IMAP功能:获取文件夹列表,获取邮件标题,获取mime消息等.)
从IMAP服务器“实时”获取电子邮件数据非常有效.但是这里面临着艰巨的任务:我必须将缓存SQL数据库的电子邮件/文件夹保持同步到IMAP服务器(我必须显示应用不同标准的数据).
我们的数据库模式基本上包含“文件夹”和“电子邮件”表. “电子邮件”表主要包含标题信息,如“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服务器.
如果这是正确的,则同步实际上是后台任务.我的方法是在逐个用户的基础上使用事件模型进行同步.如果可能,当有用户的活动(新的/删除的电子邮件)时“通知”同步程序.将同步“作业”添加到将同步作业一起批处理的后台进程.通知模型将确保synch程序仅适用于需要同步的用户.
小的新的/删除的电子邮件同步作业转到一个“处理器”,而诸如总重新同步和文件夹重组的较大的作业转到另一个.为了保持整体吞吐量较高,可能需要拆分非常大的重新同步工作. “小工作”和“大工作”处理器可以是两种不同的服务,或者可能是两种不同的线程,这取决于性能和设计考虑因素.
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
