使用PHP访问Exchange的最佳方法是什么?
我正在用PHP编写CMS应用程序,其中一个要求是它必须能够与客户的Exchange服务器进行交互。 我已经写了几次这个function,并一直使用WebDAV来做到这一点,但现在我倾向于这一点。
我将在Windows服务器2008上运行IIS或Apache上的网站(无偏好)。我需要做的一些事情包括将联系人添加到给定用户的地址簿,以给定用户的身份发送电子邮件以及在联系人上运行报告用户。
所有这些对于WebDAV来说都非常简单,但是如果有一种更好的方法,不需要任何可能很快被弃用的function。
有任何想法吗?
更新:
贾斯汀,我喜欢使用COM对象的想法,我只是担心维护第三个产品,使一切工作…
John,我可以在C#中编写一个Web服务来与这些函数进行交互,并使用我的PHP应用程序来访问它,但是这也有点不合适。
到目前为止,我并不是100%相信这些比WebDAV好…
任何人都可以告诉我我傻了吗?
我没有使用PHP来做到这一点,但有使用C#实现相同的事情的经验。
Outlook API是自动化Outlook的一种方式,而不是直接连接到Exchange。 我以前在C#应用程序中采取了这种方法,虽然可能是越野车,它确实工作。
如果您希望直接连接到Exchange服务器,则需要研究扩展的MAPI。
在过去,我使用这个包装MAPIEx:扩展MAPI包装 。
这是一个C#项目,但我相信你可以在PHP5的Windows服务器上使用一些.NET代码。 或者它有一个C ++核心DLL,你可能会使用它。 我发现它非常好,有一些很好的示例应用程序。
更新:
对不起,延迟没有目前的方式来跟踪post呢。
我同意在你的应用程序中增加更多的图层,并依赖第三方代码可能是可怕的(也是如此)。
今天,我读了另一个有趣的post,标记为不同主题的MAPI。 这里关键的是它已经链接到这个重要的MS文章 。 直到现在,我还没有意识到使用托pipe代码与MAPI接口的问题,尽pipe组件中的C ++代码不受此错误的影响,因为它是不受pipe理的。
此博客条目还build议连接到MAPI / Exchange服务器的其他方法。 在这种情况下,由于这些新的事实http://us3.php.net/imap可能是由其他用户build议的答案。;
您的客户使用Exchange 2007吗? 如果是这样,我会看看Exchange Web服务 。 如果没有,尽可能多毛,我认为WebDAV是你最好的select。
就我个人而言,我不喜欢使用Outlook.Application COM对象路由,因为它的安全提示(“一个应用程序试图访问您的联系人,允许这个?”等)可能会导致服务器上的问题。 我也认为使用Outlook来完成类似你的冒充任务是困难的,比如发送邮件给用户。
我不能高度推荐Dmitry Streblechenko的Redemption Data Objects库。 这是一个COM组件,为扩展MAPI提供了一个完善的API,使用起来非常愉快。 Exchange API的目标是从一个版本转移到另一个版本:“使用M:驱动器! 不,使用WebDAV! 不,使用ExOLEDB!…不,使用Web服务!“唯一不变的就是老的MAPI。
我已经发布了一个开放源代码的MIT许可库,允许您使用Exchange Web服务在PHP中执行一些基本的操作。
Exchange Web服务的PHP
我只在Linux上进行了testing,但是我没有看到为什么它不能在Windows的Windows上安装。
我不是PHP开发者,但Google说PHP 5+可以实例化COM组件。 如果您可以在一个盒子上安装Outlook,您可以在COM组件周围编写一个PHP Web服务来处理您所需要的请求。
$outlook = COM("Outlook.Application")
Outlook API参考
这Zarafa PHP MAPI扩展看起来像它可以工作。
我会研究IMAP
IMAP,POP3和NNTP
我build议使用“ PHP Exchange Web服务 ”或简短的php-ews。
在维基下的文档数量相当可观,对我有很大的帮助。