Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP访问Exchange的最佳方法?_Php_Windows_Exchange Server_Webdav_Mapi - Fatal编程技术网

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

使用PHP访问Exchange的最佳方法?,php,windows,exchange-server,webdav,mapi,Php,Windows,Exchange Server,Webdav,Mapi,我正在用PHP编写一个CMS应用程序,其中一个要求是它必须能够与客户的Exchange服务器接口。我以前写过几次这个功能,一直都是这样做的,但现在我不再这么做了 我将在Windows server 2008上的IIS或Apache(无首选项)上运行该站点。我需要做的几件事包括将联系人添加到给定用户的通讯簿、作为给定用户发送电子邮件以及为用户运行联系人报告 所有这些在WebDAV中都很容易做到,但是如果有更好的方法,不需要任何可能很快就会被弃用的功能的话 有什么想法吗 更新: 贾斯汀,我喜欢使用c

我正在用PHP编写一个CMS应用程序,其中一个要求是它必须能够与客户的Exchange服务器接口。我以前写过几次这个功能,一直都是这样做的,但现在我不再这么做了

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

所有这些在WebDAV中都很容易做到,但是如果有更好的方法,不需要任何可能很快就会被弃用的功能的话

有什么想法吗

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

John,我可以用C#编写一个web服务来为这些函数提供接口,并用我的PHP应用程序访问它,但这也有点太离谱了

到目前为止,我并不是100%相信这两个都比WebDAV好


有人能告诉我我在哪里傻吗?

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

$outlook = COM("Outlook.Application")

自2020年起更新:
十多年来,这个问题和事情一直在向前发展。Microsoft现在有一个可以让您轻松访问这些数据的


原始答案

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

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

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

过去我用过这个包装

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


抱歉耽搁了,目前还没有跟踪帖子的方法

我同意在应用程序中添加更多的层,并且依赖第三方代码可能会让人害怕(这是理所当然的)

今天我读了另一篇标为MAPI的文章,是关于另一个主题的。但这里的关键是,它已经链接到了。直到现在为止,我一直不知道使用托管代码来与MAPI接口的问题,尽管组件中的C++代码不受此错误影响,因为它是非托管的。 此博客还建议使用其他方法连接到MAPI/Exchange服务器。在这种情况下,由于这些新的事实可能是其他用户建议的答案。

我将研究IMAP


您的客户是否在使用Exchange 2007?如果是的话,我会看一看。如果不是的话,我认为WebDAV是你最好的选择


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

我对Dmitry Streblechenko的库的推荐不够高。它是一个COM组件,为扩展的MAPI提供了一个健全的API,使用起来很愉快。Exchange API的目标从一个版本转移到下一个版本:“使用M:drive!不,使用WebDAV!不,使用ExOLEDB!…不,使用Web服务!”唯一不变的是良好的旧MAPI。

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


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

这个扩展看起来可以运行。

我建议使用或shortPHP ews。

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


上一次更新是在3个月前,所以它被保留了下来

我投票支持WebDAV。如果它能满足你的需要,就坚持下去。这是一个简单、定义良好的接口。COM和consorts是最灵活的,但文档很少,而且常常不稳定。您能举一个用php中的WEBDAV连接exchange server的例子吗?我想向exchange server添加一个日历事件。您好,您能详细说明如何从我的php脚本在exchange server上创建日历事件吗?有一个名为“create_event”的函数。这应该是不言自明的。谢谢,所以我需要托管exchange服务器并将其与我的php网站集成?是否还要手动集成outlook和exchange server?您对php exchange server集成有何想法?目前(2018年6月),这是最相关的答案。此答案不再相关,因为它已不存在。此解决方案不再相关,因为它不再处于活动状态,也不再由Microsoft维护。在花了几天时间尝试不同的选项(包括jamesiarmes/php ews)后为了连接到我们的公司Exchange server 2010并实际发送电子邮件,我测试了这个库,它是开箱即用的!感谢Garethp Parker(开发者)和Justin Levene的链接!