Лучший способ получить доступ к Exchange с помощью PHP?

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

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

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

Есть идеи?

Обновить:

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

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

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

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

3.08.2008 00:03:58
Я голосую за WebDAV. Если он может делать то, что вам нужно, оставайтесь с ним. Это простой, четко определенный интерфейс. COM и консорты являются наиболее гибкими, но редко документированными и часто нестабильными.
Pekka 3.02.2010 21:02:19
Можете ли вы привести пример подключения к серверу обмена с WEBDAV в php? Я хотел бы добавить событие календаря на сервер обмена.
shasi kanth 18.05.2011 14:42:38
9 ОТВЕТОВ
РЕШЕНИЕ

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

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

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

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

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

Обновить:

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

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

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

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

21
23.05.2017 11:46:37

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

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

13
5.08.2008 02:35:02

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

Веб-сервисы Exchange для PHP

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

10
27.01.2013 11:33:33
Привет, вы можете рассказать, как я могу создать событие календаря на сервере Exchange из моего PHP-скрипта?
shasi kanth 18.05.2011 14:43:44
Есть функция с именем "create_event". Это должно быть довольно очевидно. github.com/rileydutton/Exchange-Web-Services-for-PHP/blob/…
Riley Dutton 8.06.2011 21:26:54
Спасибо, так что мне нужно разместить сервер обмена и интегрировать его с моим сайтом php? А также интегрировать Outlook и Exchange Server вручную? У вас есть идея об интеграции сервера php-exchange?
shasi kanth 9.06.2011 06:20:48
На данный момент (2018 июнь) это самый актуальный ответ.
Cagy79 23.06.2018 22:12:11

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

8
27.03.2016 01:02:05

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

$outlook = COM("Outlook.Application")

Ссылка на API Outlook

5
3.08.2008 03:07:30
Это решение больше не актуально, так как оно больше не активно и не поддерживается Microsoft.
Cagy79 23.06.2018 21:52:47

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

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

5
1.02.2013 13:20:33

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

4
23.01.2015 08:14:08
Этот ответ больше не актуален, так как его больше нет.
Cagy79 23.06.2018 21:51:19

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

IMAP, POP3 и NNTP

3
27.01.2013 11:33:41

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

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

2
9.10.2018 16:31:54