我已经完成了编写一个小应用程序的任务,以帮助将位于linux IMAP服务器上的公共文件夹结构中的400GB以上的电子邮件迁移到MS Exchange 2010公共文件夹。
我看了拖拉与前景,但有一个问题。 Outlook在推送到Exchange之前将所有电子邮件本地缓存到pst文件。目前这些文件的限制是20GB。
现在不是C#中的强大开发人员,有没有办法使用outlook作为imap服务器和交换机的连接器,然后使用C#来遍历文件夹结构并复制电子邮件?
重要的是我们不会丢失任何原始电子邮件标题/源数据。
我知道在Exchange 2010中与公用文件夹通信的唯一方法是使用Exchange Web服务,但是从我看到的示例中可能会更改电子邮件源。我希望outlook能够帮助预先获取这些数据,并且使用mapi接口无需进行这些Web服务调用。
虽然我已经说过我正在使用C#,但我愿意用另一种语言(java,perl,php等)编写这个,我只需要提出一些有助于解决问题的方法。
SO社区中的任何人都可以给我任何指示来帮助解决这个问题或指出我正确的方向吗?
非常感谢,
捐赠
答案 0 :(得分:1)
我担心在不更改电子邮件来源的情况下无法将数据迁移到MS Exchange 2010。 Exchange 2007不再存储实际的MIME数据(这是您从IMAP服务器获取的格式),只是按需重新构造它。他们只存储他们称之为“MIME Skeleton”的内容 - 请参阅此MS forum。我在该论坛中没有找到但观察自己的是,这个反向过程通常不会产生与原始消息相同的消息 - MIME实体的内容不变,但其结构经常被改变 - 使用不同的内容传输编码,一些标题或添加或修改,等等。
至少这是用户邮箱中的邮件存储方式 - 但我的猜测是公共文件夹的信息是相同的。此外,Exchange 2010可能(尽管不太可能)的行为与Excahnge 2007不同。
虽然我不是MAPI的专家,但我认为甚至没有使用MIME格式(Outlook甚至无法以MIME格式保存消息),这将使MAPI成为可能保留电子邮件来源的不太可能的解决方案。
所以我的建议是做你已经尝试过的事情 - 以MIME格式从IMAP服务器获取电子邮件数据并使用Exchange Web服务存储它。我们这样做是为了将电子邮件的Messahgs从IMAP服务器移动到Exchange 2007用户邮箱中,并且从未遇到任何破坏电子邮件的问题(但我们再没有400GB的数据)。