向后兼容性和历史上的诸多古老的解决方案对于微软阵营的开发者而言就是梦魇,它的多语言支持又是另外一个败笔。

我现在被迫从Java阵营临时到了微软阵营,但是遇到的问题多多。
现在有几个比较简单的任务:得到Exchange Server的邮件大小,Exchange本身没有API做这个事情,但是有一些其他的变通方式,例如得到所有的Mailbox然后统计每个Mailbox的大小,而Mailbox的大小也没有直接的API,需要统计所有的Folder的大小,虽然性能上不太好,但是总归是可以做到的。
目前发现的解决方案有这样几个:

  • 使用Exchange 2007的management shell带的Get-MailboxStatistics脚本,我们可以得到Exchange的某个Database的大小,但是缺点是需要在Exchange Server上运行,优点是可以很容易写出C#的代码。
  • 使用Exchange 2007的EWS,优点是可以写出C#代码,而且可以从其他机器运行,缺点是只支持2007版本
  • 使用MAPI32,问题是只能写c++代码,尝试使用DllImport直接使用MAPI32,但是到HrOpenExchangePrivateStore就出问题了,内存读写有问题,MAPIInitialize,MAPILogon,MAPILogoff等方法就没事。网上看到有人用c#封装了MAPI32,但是没有涉及到HrOpenExchangePrivateStore。

接下来只能尝试写COM组件把它包起来给c#用了。

(Visited 105 times, 1 visits today)