使用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。

在维基下的文档数量相当可观,对我有很大的帮助。

Interesting Posts