Лучший способ получить доступ к Exchange с помощью PHP? - PullRequest
51 голосов
/ 03 августа 2008

Я пишу приложение CMS на PHP, и одно из требований заключается в том, что оно должно иметь возможность взаимодействовать с сервером Exchange клиента. Я уже писал эту функцию несколько раз и всегда использовал для этого WebDAV , но теперь я отказываюсь от этого.

Я буду запускать сайт на IIS ИЛИ Apache (без предпочтений) на Windows Server 2008. Мне нужно будет сделать несколько вещей, включая добавление контактов в адресную книгу данного пользователя, отправку электронных писем данному пользователю и запуск отчетов на контакты для пользователя.

Все это довольно легко сделать с WebDAV, но если есть лучший способ, который не требует какой-либо функциональности, которая скорее всего устареет в ближайшее время.

Есть идеи?

Обновление:

Джастин, мне нравится идея использования com-объектов, я просто беспокоюсь о поддержке третьего продукта, чтобы все работало ...

Джон, я могу написать веб-сервис на C # для взаимодействия с этими функциями и получить к нему доступ через мое приложение PHP, но это также немного не так.

Пока что я не уверен на 100%, что любой из них лучше, чем WebDAV ...

Может кто-нибудь показать мне, где я глупый?

Ответы [ 9 ]

21 голосов
/ 03 августа 2008

Я не использовал PHP для этого, но у меня есть опыт использования C # для достижения того же.

Outlook API - это способ автоматизации Outlook вместо непосредственного подключения к Exchange. Ранее я использовал этот подход в приложении C #, и он работает, хотя может быть и с ошибками.

Если вы хотите подключиться напрямую к серверу Exchange, вам нужно исследовать расширенный MAPI.

В прошлом я использовал эту оболочку MAPIEx: Extended MAPI Wrapper .

Это проект на C #, но я считаю, что вы можете использовать некоторый код .NET на сервере Windows PHP5. В качестве альтернативы у него есть ядро ​​C ++, которое вы можете использовать. Я нашел, что это очень хорошо, и есть несколько хороших примеров приложений.

Обновление:

Извините за задержку, пока нет способа отслеживать сообщения.

Я согласен, что добавление слоя в ваше приложение и использование стороннего кода может быть страшным (и вполне справедливо).

Сегодня я прочитал еще один интересный пост , помеченный как MAPI на другую тему. Ключевым моментом здесь является то, что он связан с этой важной статьей MS . До сих пор я не знал о проблемах, связанных с использованием управляемого кода для взаимодействия с MAPI, хотя на код C ++ в компоненте не влияет эта ошибка, поскольку она неуправляема.

В этой записи блога также предлагаются другие способы подключения к серверу MAPI / Exchange. В этом случае из-за этих новых фактов http://us3.php.net/imap может быть ответом, предложенным другим пользователем.

13 голосов
/ 05 августа 2008

Ваш клиент использует Exchange 2007? Если это так, я бы взглянул на Exchange Web Services . Если нет, то, насколько это возможно, я думаю, что WebDAV - ваш лучший выбор.

Лично мне не нравится использовать маршрут COM-объекта Outlook.Application, поскольку его запросы безопасности («Приложение пытается получить доступ к вашим контактам. Разрешить это?» И т. Д.) Могут вызвать проблемы на сервере. Я также думаю, что было бы трудно выполнить ваши задачи, подобные имитации, с помощью Outlook, такие как отправка почты от имени данного пользователя.

9 голосов
/ 04 мая 2011

Я выпустил лицензионную библиотеку MIT с открытым исходным кодом, которая позволяет вам выполнять некоторые базовые операции в PHP с использованием веб-служб Exchange.

Веб-службы Exchange для PHP

Я тестировал его только в Linux, но не вижу причин, по которым он не будет работать и при установке PHP на Windows.

8 голосов
/ 02 сентября 2008

Я не могу рекомендовать библиотеку Дмитрия Стребченко Погашение данных достаточно высоко. Это COM-компонент, который предоставляет расширенный API-интерфейс для Extended MAPI и очень удобен в использовании. Цели Exchange API переходят от одного выпуска к следующему: «Используйте диск M:! Нет, используйте WebDAV! Нет, используйте ExOLEDB! ... Нет, используйте веб-сервисы! », Единственной константой является старый добрый MAPI.

5 голосов
/ 03 августа 2008

Я не PHP-разработчик, но Google говорит, что PHP 5+ может создавать экземпляры COM-компонентов. Если вы можете установить Outlook на коробку, вы можете написать PHP-веб-сервис вокруг COM-компонента для обработки нужных вам запросов.

$outlook = COM("Outlook.Application")

Ссылка на API Outlook

4 голосов
/ 01 февраля 2013

Я бы рекомендовал использовать " PHP Exchange Web Services " или короткий php-ews.

Изрядное количество документации по wiki , мне очень помогло.

4 голосов
/ 09 мая 2012

Это расширение Zarafa PHP MAPI выглядит так, как будто оно может работать.

3 голосов
/ 04 августа 2008

Я бы посмотрел в IMAP

IMAP, POP3 и NNTP

0 голосов
/ 09 октября 2018

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

Последний раз оно обновлялось 3 месяца назад, поэтому оно поддерживается

...