使用PHP访问Exchange的最佳方式是什么?

我正在用PHP编写CMS应用程序,其中一个要求是它必须能够与客户的Exchange服务器进行交互。我已经写了几次此功能,并一直使用 WebDAV 来做到这一点,但现在我偏离了那个。

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

所有这些对于WebDAV来说都非常简单,但是如果有更好的方式,不需要任何很快就会被弃用的功能。

有任何想法吗?

更新:

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

John,我可以在C#中编写一个Web服务来与这些函数进行交互,并使用我的PHP应用程序访问它,但它也有点不合适。

到目前为止,我并不完全相信这两种方法都比WebDAV更好。

任何人都可以告诉我我傻的地方吗?

0
额外 编辑
意见: 1
@Dave:只保存游戏
额外 作者 Polsonby,
我投票支持WebDAV。如果它能够做到你所需要的,那就留下来吧。这是一个简单的,定义明确的界面。 COM和配偶是最灵活但稀少的文件,并且往往不稳定。
额外 作者 Pekka 웃,
有人应该找出一种方法来取代/补充这些,否则我的收藏会在他们成为严肃的收藏家物品之前严重地贬值:-p
额外 作者 Brian,
我希望我能不止一次地投票。 ;)
额外 作者 blcArmadillo,
你可以指出一个连接到交换服务器与PHP中的WEBDAV的例子吗?我想添加一个日历事件来交换服务器。
额外 作者 shasi kanth,
@Mechko:他们已经替换了他们多年: the9thkey.com/games/Nesbatt.htm
额外 作者 rfunduk,
什么?你的意思是当电池耗尽时,它们是电池驱动的,并且会释放所有的游戏存档游戏? Oo这只会影响游戏存档还是会让整个游戏无法玩?
额外 作者 svec,

9 答案

根据此页面,电池可持续使用15 - 20年。

31
额外
哇。真正令人印象深刻的质量,考虑到5 - 10年不会有丝毫伤害他们的销售。
额外 作者 rfunduk,
可能有一天派上用场
额外 作者 Keaanu,

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

Outlook API是一种自动化Outlook的方式,而不是直接连接到Exchange。我以前在C#应用程序中采用了这种方法,但它确实可行,虽然可能会有问题。

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

在过去,我使用这个包装器 MAPIEx:扩展MAPI包装器

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

更新:

对不起延迟没有当前的方式来跟踪帖子。

我同意在应用程序中添加更多图层,并依赖第三方代码可能会令人感到恐惧(并且正确)。

今天,我阅读另一个有趣的帖子,标记为另一主题上的MAPI。这里的关键是它已经链接到这篇重要的MS文章。直到现在,我还没有意识到使用托管代码与MAPI接口的问题,尽管组件中的C ++代码不受此错误的影响,因为它是非托管的。

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

0
额外

您的客户使用Exchange 2007吗?如果是这样,我会看看 Exchange Web Services 。如果不是,尽可能多毛,我认为WebDAV是你最好的选择。

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

0
额外

我不是PHP开发者,但Google表示PHP 5+可以实例化COM组件。如果你可以在一个盒子上安装Outlook,你可以在COM组件周围编写一个PHP web服务来处理你需要的请求。

$outlook = COM("Outlook.Application")

Outlook API参与

0
额外

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

0
额外

I would recommend using "PHP Exchange Web Services" or short php-ews.

wiki 下有相当数量的文档,对我有很大的帮助。

0
额外

我无法高度推荐Dmitry Streblechenko的 Redemption数据对象库。这是一个COM组件,它为扩展MAPI提供了一个合理的API,并且使用起来很愉快。 Exchange API的目标是从一个版本转移到另一个版本:?使用M:驱动器!不,使用WebDAV!不,使用ExOLEDB!?不,使用Web服务!?唯一不变的是老式的MAPI。

0
额外

我会研究IMAP

IMAP,POP3和NNTP

0
额外

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

Exchange Web Services for PHP

我只在Linux上进行了测试,但是我没有看到任何理由说明为什么它不能在Windows的PHP安装上运行。

0
额外
嗨,你能否详细说明我如何在交换服务器上从我的php脚本创建日历事件?
额外 作者 shasi kanth,
谢谢,所以我需要托管交换服务器并将其与我的PHP网站集成?还要手动整合outlook和exchange服务器?你有关于php-exchange服务器集成的想法吗?
额外 作者 shasi kanth,
有一个叫做“create_event”的函数。它应该是不言自明的。 github.com/rileydutton/Exchange-网络服务换PHP / BLOB /…
额外 作者 Riley Dutton,