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

时间:2020-03-05 18:37:23  来源:igfitidea点击:

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

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

使用WebDAV可以很容易地完成所有这些工作,但是如果有更好的方法不需要任何可能很快被弃用的功能。

有任何想法吗?

更新:

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

约翰,我可以在Cto界面中为这些功能编写Web服务,并通过我的PHP应用程序进行访问,但是这也有点麻烦。

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

谁能告诉我我在哪里傻?

解决方案:

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

$outlook = COM("Outlook.Application")

Outlook API参考

我没有使用PHP来做到这一点,但是有使用C来实现相同目的的经验。

Outlook API是自动执行Outlook而不是直接连接到Exchange的一种方法。我以前曾在C应用程序中采用过这种方法,尽管可能有问题,但它确实可以工作。

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

过去,我使用此包装MAPIEx:扩展MAPI包装器。

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

更新:

很抱歉造成延迟,目前尚无追踪帖子的方法。

我确实同意在应用程序上添加更多的层,并且依靠第三方代码可能会令人恐惧(理应如此)。

今天,我读了另一篇有趣的文章,该文章被标记为MAPI,涉及另一主题。不过,这里的关键是它已链接到这篇重要的MS文章。直到现在,我仍然没有使用托管代码连接到MAPI的问题,尽管该组件中的C ++代码应不受此错误的影响,因为它是非托管的。

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

我会看一下IMAP

IMAP,POP3和NNTP

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

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

我不能高度推荐Dmitry Streblechenko的Redemption Data Objects库。它是一个COM组件,可为扩展MAPI提供可靠的API,并且使用起来很愉快。 Exchange API目标柱从一个版本转移到另一个版本:使用M:驱动器!不,使用WebDAV!不,使用ExOLEDB!不,使用Web服务!唯一的常数就是好的旧MAPI。