代码之家  ›  专栏  ›  技术社区  ›  Bruce the Hoon

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

  •  51
  • Bruce the Hoon  · 技术社区  · 18 年前

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

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

    所有这些对于WebDAV来说都非常简单,但是如果有更好的方法不需要任何可能很快就会被否决的功能的话。

    有什么想法吗?

    更新:

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

    约翰,我可以用C语言编写一个Web服务,为这些函数提供接口,并用我的PHP应用程序访问它,但这也有点碍事。

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

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

    9 回复  |  直到 7 年前
        1
  •  21
  •   Community Mohan Dere    9 年前

    我没有使用PHP来完成这项工作,但在使用C实现相同的目标方面有经验。

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

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

    过去我用过这个包装纸 MAPIEx: Extended MAPI Wrapper .

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

    更新:

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

    我同意在您的应用程序上添加更多层,并且依赖第三方代码可能会很可怕(这是正确的)。

    今天我又看了一本 interesting post 标记为其他主题上的MAPI。但关键是它与 this important MS article . 直到现在,我仍然不知道使用托管代码来与MAPI接口的问题,尽管组件中的C++代码不受此错误的影响,因为它是非托管的。

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

        2
  •  13
  •   Mike Powell    18 年前

    您的客户使用的是Exchange 2007吗?如果是的话,我想看看 Exchange Web Services . 如果不是的话,尽可能多毛,我认为WebDAV是你最好的选择。

    我个人不喜欢使用outlook.application com对象路由作为其安全提示(“应用程序正在尝试访问您的联系人)。允许这样吗?”等)可能导致服务器出现问题。我还认为很难像使用Outlook一样完成模拟任务,例如作为给定用户发送邮件。

        3
  •  9
  •   Riley Dutton    13 年前

    我已经发布了一个开放源码的MIT授权库,它允许您使用ExchangeWeb服务在PHP中执行一些基本操作。

    Exchange Web Services for PHP

    我只在Linux上测试过它,但我不明白为什么它不能在Windows安装的PHP上工作。

        4
  •  8
  •   Dmitry Streblechenko    10 年前

    我不能推荐Dmitry Streblechenko的 Redemption Data Objects 图书馆足够高。它是一个COM组件,为扩展的MAPI提供了一个健全的API,使用起来非常愉快。Exchange API目标柱从一个版本移动到下一个版本:使用m:drive!不,使用WebDAV!不,使用exoledb!不,使用网络服务!_157;唯一不变的是好的旧MAPI。

        5
  •  5
  •   Roddy    18 年前

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

    $outlook = COM("Outlook.Application")
    

    Outlook API referance

        6
  •  4
  •   Tim Boland    13 年前

    我会调查一下imap

    IMAP, POP3 and NNTP

        7
  •  4
  •   Valentin Despa    13 年前

    我建议使用 PHP Exchange Web Services 或短 PHP EWS。

    公平数量的文件 wiki 帮助了我很多。

        8
  •  4
  •   Fr0zenFyr    11 年前

    这个 Zarafa PHP MAPI 扩展似乎可以工作。

        9
  •  0
  •   Justin Levene    7 年前

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

    它最后一次更新是在3个月前,因此被维护