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


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

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

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

Есть идеи?

Обновление:

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

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

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

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

Author: Abdulla Nilam, 2008-08-03

8 answers

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

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

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

В прошлом я использовал эту оболочку MAPIEX: Расширенный MAPI Обертка.

Это проект на C#, но я верю, что вы можете его использовать.СЕТЕВОЙ код на сервере Windows PHP5. В качестве альтернативы у него есть библиотека DLL C++ core, которую вы можете использовать. Я нашел, что это очень хорошо, и есть несколько хороших примеров приложений.

Обновление:

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

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

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

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

 21
Author: John, 2017-05-23 11:46:37

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

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

 13
Author: Mike Powell, 2008-08-05 02:35:02

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

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

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

 8
Author: Riley Dutton, 2013-01-27 11:33:33

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

 8
Author: Duncan Smart, 2016-03-27 01:02:05

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

$outlook = COM("Outlook.Application")

Ссылка на API Outlook

 5
Author: Justin Walgran, 2008-08-03 03:07:30

Я бы заглянул в IMAP

Протокол IMAP, POP3 и NNTP

 4
Author: Tim Boland, 2013-01-27 11:33:41

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

 4
Author: Scott Szretter, 2015-01-23 08:14:08

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

Достаточное количество документации в вики очень помогло мне.

 3
Author: Valentin Despa, 2013-02-01 13:20:33