windows -使用PHP访问Exchange的最佳方法?

Translate

我正在用PHP编写CMS应用程序,其中一项要求是它必须能够与客户的Exchange服务器对接。我已经写了几次这个功能,并且一直使用WebDAV做到这一点,但现在我不再这样做了。

我将在Windows Server 2008上的IIS或Apache(无首选项)上运行该站点。我需要做的几件事包括将联系人添加到给定用户的通讯录中,以给定用户的身份发送电子邮件,以及为联系人运行报告。用户。

使用WebDAV可以轻松实现所有这些功能,但是如果有更好的方法不需要任何可能很快被弃用的功能。

有任何想法吗?

更新:

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

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

到目前为止,我还不是100%确信这两种方法都比WebDAV更好。

谁能告诉我我在哪里傻?

This question and all comments follow the "Attribution Required."

所有的回答

Translate

我没有使用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可能是其他用户建议的答案。

来源
Translate

您的客户正在使用Exchange 2007吗?如果是这样,我来看看Exchange Web服务。如果不是这样,那么我想WebDAV是最好的选择。

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

来源
Translate

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

用于PHP的Exchange Web服务

我仅在Linux上对其进行了测试,但是我看不出任何理由也无法在Windows安装的PHP上运行。

来源
Translate

我不推荐德米特里·斯特雷布连科的兑换数据对象库足够高。它是一个COM组件,可为扩展MAPI提供可靠的API,并且使用起来很愉快。 Exchange API目标柱从一个版本转移到另一个版本:“使用M:驱动器!不,使用WebDAV!不,请使用ExOLEDB!…不,请使用Web服务!”唯一的常数就是好的旧MAPI。

来源
Translate

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

$outlook = COM("Outlook.Application")

Outlook API参考

来源
Translate

我建议使用"PHP Exchange Web服务"或短php-ews。

根据维基,对我帮助很大。

来源
Translate

这个Zarafa PHP MAPI扩展程序看起来可以正常工作。

来源
Translate

我会调查IMAP

IMAP,POP3和NNTP

来源
Translate

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

它的最新更新时间为3个月,因此保持不变

来源