
Best way to access Exchange using PHP?我正在用PHP编写CMS应用程序,其中一项要求是它必须能够与客户的Exchange服务器对接。我之前已经写过几次此功能,并且一直使用WebDAV来完成此功能,但是现在我不打算这样做了。 我将在Windows Server 2008上的IIS或Apache上运行该站点(无首选项)。我需要做的几件事包括将联系人添加到给定用户的通讯录中,以给定用户的身份发送电子邮件,以及为联系人运行报告。用户。 使用WebDAV可以轻松实现所有这些功能,但是如果有更好的方法不需要任何可能很快被弃用的功能。 有任何想法吗? 更新: 贾斯汀,我喜欢使用com对象的想法,我只是担心维护第三个产品才能使一切正常工作... 约翰,我可以用C#编写一个Web服务来与这些功能进行交互,并通过我的PHP应用程序进行访问,但是这也有点麻烦。 到目前为止,我还不是100%确信这两种方法都比WebDAV更好。 谁能告诉我我在哪里傻?
2020年更新: 原始答案 我没有使用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可能是其他用户建议的答案。 您的客户正在使用Exchange 2007吗?如果是这样,我将看一下Exchange Web服务。如果不是这样,那么我想WebDAV是最好的选择。 我个人不喜欢使用Outlook.Application COM对象路由,因为它的安全提示("应用程序正在尝试访问您的联系人。是否允许?"等)可能会导致服务器出现问题。我还认为,使用Outlook完成类似模拟的任务很困难,例如以给定用户的身份发送邮件。 我已经发布了MIT许可的开源库,该库允许您使用Exchange Web Services在PHP中执行一些基本操作。 用于PHP的Exchange Web服务 我仅在Linux上对其进行了测试,但是我看不出它为什么也无法在Windows安装的PHP上运行的任何原因。 我不能高度推荐Dmitry Streblechenko的Redemption Data Objects库。它是一个COM组件,可为扩展MAPI提供可靠的API,并且使用起来很愉快。 Exchange API目标柱从一个版本转移到另一个版本:"使用M:驱动器!不,使用WebDAV!不,请使用ExOLEDB!…不,请使用Web服务!"唯一的常数就是好的旧MAPI。 我建议使用" PHP Exchange Web服务"或简短的php-ews。 Wiki下的大量文档对我帮助很大。 我不是PHP开发人员,但Google表示PHP 5+可以实例化COM组件。如果可以将Outlook安装在盒子上,则可以围绕COM组件编写PHP Web服务来处理所需的请求。
Outlook API参考 这个Zarafa PHP MAPI扩展看起来可以正常工作。 我会调查IMAP IMAP,POP3和NNTP https://github.com/Garethp/php-ews 它的最新更新时间为3个月,因此保持不变 |