57

我正在用 PHP 编写一个 CMS 应用程序,其中一个要求是它必须能够与客户的 Exchange 服务器交互。我之前已经写过几次这个功能,并且一直使用WebDAV来完成它,但现在我不再使用它了。

我将在 Windows server 2008 上的 IIS 或 Apache(无偏好)上运行该站点。我需要做的一些事情包括将联系人添加到给定用户的地址簿、作为给定用户发送电子邮件以及运行联系人报告用户。

所有这一切都可以通过 WebDAV 轻松完成,但如果有更好的方法不需要任何可能很快就会被弃用的功能。

有任何想法吗?

更新:

贾斯汀,我喜欢使用 com 对象的想法,我只是担心维护第三个产品以使一切正常......

约翰,我可以用 C# 编写一个 Web 服务来与这些函数交互,并使用我的 PHP 应用程序访问它,但它也有点偏僻。

到目前为止,我并不是 100% 相信其中任何一个都比 WebDAV 更好......

谁能告诉我我在哪里傻?

4

9 回答 9

24

截至 2020 年的更新:
自从这个问题和事情发生以来已经有十多年了。Microsft 现在有一个Rest API,可以让您轻松访问这些数据。


原始答案

我没有使用 PHP 来做到这一点,但有使用 C# 来实现相同目标的经验。

Outlook API 是一种自动化 Outlook 的方法,而不是直接连接到 Exchange。我以前在 C# 应用程序中采用过这种方法,它确实有效,尽管可能有问题。

如果您希望直接连接到 Exchange 服务器,则需要研究扩展 MAPI。

过去我使用这个包装器MAPIEx: Extended MAPI Wrapper

这是一个 C# 项目,但我相信您可以在 PHP5 Windows 服务器上使用一些 .NET 代码。或者,它有一个您可以使用的 C++ 核心 DLL。我发现它非常好,并且有一些很好的示例应用程序。


抱歉,目前还没有跟踪帖子的方法。

我同意在您的应用程序上添加更多层并依赖 3rd 方代码可能会很可怕(这是理所当然的。)

今天我阅读了另一篇有趣的帖子,标记为 MAPI,主题不同。不过这里的关键是它与这篇重要的 MS 文章相关联。到目前为止,我一直没有意识到使用托管代码与 MAPI 接口的问题,尽管组件中的 C++ 代码应该不受此错误的影响,因为它是非托管的。

此博客条目还建议了连接到 MAPI/Exchange 服务器的其他方法。在这种情况下,由于这些新事实http://us3.php.net/imap可能是其他用户建议的答案。

于 2008-08-03T07:50:37.617 回答
14

您的客户是否使用 Exchange 2007?如果是这样,我会看看Exchange Web Services。如果不是,尽管它可能很麻烦,但我认为 WebDAV 是你最好的选择。

我个人不喜欢使用 Outlook.Application COM 对象路由,因为它的安全提示(“应用程序正在尝试访问您的联系人。允许这个?”等)可能会导致服务器出现问题。我还认为使用 Outlook 完成类似模拟的任务会很困难,例如以给定用户的身份发送邮件。

于 2008-08-05T02:35:02.820 回答
12

我发布了一个开源的 MIT 许可库,允许您使用 Exchange Web 服务在 PHP 中执行一些基本操作。

用于 PHP 的 Exchange Web 服务

我只在 Linux 上测试过它,但我看不出它为什么不能在 Windows 安装的 PHP 上运行。

于 2011-05-04T13:47:32.997 回答
10

我不能高度推荐 Dmitry Streblechenko 的Redemption Data Objects库。它是一个 COM 组件,为 Extended MAPI 提供了一个健全的 API,使用起来很愉快。Exchange API 目标从一个版本移动到下一个版本:“使用 M:驱动器!不,使用 WebDAV!不,使用 ExOLEDB!……不,使用 Web 服务!” 唯一不变的是好的旧 MAPI。

于 2008-09-01T20:33:44.037 回答
7

我不是 PHP 开发人员,但 Google 说 PHP 5+ 可以实例化 COM 组件。如果您可以在一个机器上安装 Outlook,您可以围绕 COM 组件编写一个 PHP Web 服务来处理您需要的请求。

$outlook = COM("Outlook.Application")

Outlook API 参考

于 2008-08-03T03:07:30.150 回答
7

我建议使用PHP Exchange Web Services或简短的 php-ews。

wiki下的大量文档对我帮助很大。

于 2013-02-01T13:20:33.430 回答
6

这个Zarafa PHP MAPI扩展看起来可以工作。

于 2012-05-09T18:47:12.453 回答
5

我会调查 IMAP

IMAP、POP3 和 NNTP

于 2008-08-04T17:00:40.327 回答
5

https://github.com/Garethp/php-ews

它最后一次更新是在 3 个月前,所以它被维护了

于 2018-10-09T16:31:54.517 回答