使用PHP访问交易所的最佳方式?

2022-08-30 09:51:47

我正在用PHP编写CMS应用程序,其中一个要求是它必须能够与客户的Exchange服务器接口。我之前已经写过几次这个功能,并且一直使用WebDAV来做到这一点,但现在我正在远离它。

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

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

有什么想法吗?

更新:

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

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

到目前为止,我还没有100%相信其中任何一个都比WebDAV更好......

任何人都可以告诉我我在哪里傻?


答案 1

截至2020年的更新:
自这个问题以来已经过去了十多年,事情已经发生了变化。Microsft现在有一个Rest API,可让您轻松访问此数据。


原始答案

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


答案 2

您的客户是否在使用 Exchange 2007?如果是这样,我会看看Exchange Web Services。如果没有,尽管它可能毛茸茸的,但我认为WebDAV是你最好的选择。

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


推荐