存储电子邮件以进行历史/审核的最佳方式

时间:2010-01-25 12:23:14

标签: sql-server database email exchange-server

我有一个处理邮箱中邮件的服务,一旦处理完毕,就会将电子邮件中的一些信息存储在数据库中。架构看起来像是:

  • ID
  • 汇款人
  • 主题
  • 正文(被解析/剥离为纯文本的结果)
  • DateReceived

我正在构建数据库的Web前端,存储电子邮件的主要目的是为用户提供回顾和查看已发送内容的工具。但是,另一个原因是我的审计目的。

此刻的电子邮件正在移动到特定的邮箱文件夹。所以我打算开始做的是,一旦处理完电子邮件,将其记录在数据库中,然后删除邮箱中的邮件,而不是仅仅移动它。

所以有几个问题......

1)从交换中删除实际的电子邮件是否是个好主意?是否更好地坚持以防万一?? 2)为了保持字段的大小,我正在从电子邮件中删除HTML,这是一个坏主意吗?我应该只收到收到的电子邮件吗?

任何其他意见/建议都会很棒。

2 个答案:

答案 0 :(得分:3)

在这两种情况下,我认为你应该保留原始电子邮件。存储很便宜,但是如果磁盘空间真的是一个问题,那就是压缩而不是切除来解决它。

通过将完整的未删节电子邮件存储在数据库中,可以更好地满足您的用例(历史记录和审核)。一旦你开始篡改数据,虽然“只是”删除格式,但很难证明你没有以其他更重要的方式编辑它。特别是如果您删除了原始电子邮件而不是存档它。

您没有说明您的业务,但要记住的另一件事是您的组织内或更广泛的司法管辖区内是否有任何数据保留政策。合规性一直变得越来越大。

答案 1 :(得分:1)

我会像你一样在特定文件夹上维护邮箱上的邮件,并且可能甚至不会在数据库中保存任何内容,因为您可以从应用程序中访问邮箱。

多年来,Exchange团队开发了几个用于访问邮箱内容的API。

使用Exchange Server 2007和2010,推荐的API将是Exchange Web Services,可以在任何能够访问Web服务的语言/环境中使用。

如果您使用.Net语言(例如C#,VB.NET)进行开发,那么最好的选择是EWS Managed API

如果您真的要对正文做一些有意义的事情,可以将结果保存为消息本身的命名属性(EWS用语中的扩展属性)。

还有其他API具有以前版本的Exchange的相应功能。