我正在尝试在 C#/ASP.NET 中创建一个简单的 Web 电子邮件客户端。我正在尝试使用 Aspose.Email DLL 通过 IMAP 连接到电子邮件服务器并向用户显示电子邮件。现在我正在考虑将获取的电子邮件存储在文件系统/数据库中,或者只是在每个请求中获取并显示这些电子邮件。
我认为为所有用户存储电子邮件正文可能会增加我的数据库大小,但随后用户会想要翻阅结果。处理通过 IMAP 获取的电子邮件的最佳策略是什么?
一些常规的桌面电子邮件客户端会提前下载电子邮件并将它们存储在本地,以便它们可以更快地显示给用户(以及与搜索甚至导航有关的其他实际原因,正如您所提到的)。
其他人仅下载标题(足以显示文件夹中的电子邮件列表),然后仅根据请求(当用户在列表中打开电子邮件时)下载全文。最后,这只是一个权衡,你必须看看什么在你的场景中最有效。
就我个人而言,我认为一开始就将所有电子邮件下载到一个文件夹中是多余的,而且我已经看到客户在为特别大的文件夹下载电子邮件时卡住了几个小时。一个不错的选择是只显示足以显示一个窗口的信息,并在用户向下滚动时获取其余信息 - 但这并不是一件容易实现的事情。无论如何,IMAP4 实施建议会教您一些技巧来优化与服务器的通信并避免更流行的桌面客户端中存在的许多常见缺陷。
如果您担心数据库的增长,您可以只在数据库中存储元信息,并将电子邮件本身保存在文件系统中(例如,将它们保存到 .eml 文件中)。同样,最佳解决方案可能会因您的特定环境而异。
您可以使用MailSystem.NET。它是一个开源的 .NET 邮件库。