我正在用 PHP 编写一个 CMS 应用程序,要求之一是它必须能够与客户的 Exchange 服务器连接。我之前已经写过几次这个功能并且一直使用 网络DAV 这样做,但现在我正在放弃这样做。

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

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

有任何想法吗?

更新:

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

John,我可以用 C# 编写一个 Web 服务来与这些功能交互,并使用我的 PHP 应用程序访问它,但这也有点麻烦。

到目前为止,我并不是 100% 确信这两者中的任何一个都比 WebDAV 更好......

谁能告诉我我哪里傻了?

有帮助吗?

解决方案

我没有使用 PHP 来做到这一点,但有使用 C# 来实现同样的事情的经验。

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

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

过去我用过这个包装 地图Ex:扩展 MAPI 包装器.

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

更新:

对于延迟,我们深表歉意,目前还没有方法来跟踪帖子。

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

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

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

其他提示

您的客户使用 Exchange 2007 吗?如果是这样,我会看看 交换网络服务. 。如果没有,尽管可能很棘手,但我认为 WebDAV 是您最好的选择。

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

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

PHP 的 Exchange Web 服务

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

我不能推荐 Dmitry Streblechenko 的 兑换数据对象 图书馆够高。它是一个 COM 组件,为扩展 MAPI 提供了健全的 API,并且使用起来很有趣。Exchange API 目标从一个版本转移到下一个版本:“使用它们:驾驶!不,使用 WebDAV!不,使用exoledB!…不,使用Web服务!”唯一的常数是良好的旧马普。

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

$outlook = COM("Outlook.Application")

Outlook API 参考

我建议使用 "PHP 交换网络服务" 或短 php-ews。

相当数量的文件 维基百科, ,对我帮助很大。

扎拉法 PHP MAPI 扩展看起来可以工作。

我会研究一下 IMAP

IMAP、POP3 和 NNTP

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

最后一次更新是在 3 个月前,所以仍在维护中

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top