Лучший способ получить доступ к Exchange с помощью PHP?
Я пишу приложение CMS на PHP, и одно из требований заключается в том, что оно должно иметь возможность взаимодействовать с сервером Exchange клиента. Я писал об этой функции несколько раз раньше и всегда использовал WebDAV для этого, но теперь я отклоняюсь от этого.
Я буду запускать сайт на IIS ИЛИ Apache (без предпочтений) в Windows server 2008. Несколько вещей, которые мне нужно было бы сделать, включают добавление контактов в адресную книгу данного пользователя, отправку электронных писем в качестве заданный пользователь и запуск отчетов о контактах для пользователя.
Все это довольно легко сделать с помощью WebDAV, но если есть лучший способ, который не требует каких-либо функций, которые, вероятно, будут устаревшими в ближайшее время.
Есть идеи?
Обновление:
Джастин, мне нравится идея использования com-объектов, я просто беспокоюсь о поддержании 3-го продукта, чтобы все работало...
Джон, я могу написать веб-службу на C# для взаимодействия с этими функциями и доступа это с моим PHP-приложением, но оно также немного в стороне.
До сих пор я не уверен на 100%, что любой из них лучше, чем WebDAV...
Может ли кто-нибудь показать мне, где я веду себя глупо?
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 может быть ответом, предложенным другим пользователем.
Использует ли ваш клиент Exchange 2007? Если это так, я бы взглянул на Веб-службы Exchange. Если нет, то, насколько это возможно, я думаю, что WebDAV - ваш лучший выбор.
Лично мне не нравится пользоваться Outlook.Маршрут COM-объекта приложения, как подсказывает система безопасности ("Приложение пытается получить доступ к вашим контактам. Разрешить это?" и т.д.) может вызвать проблемы на сервере. Я также думаю, что было бы трудно выполнить ваши задачи, подобные олицетворению, с помощью Outlook, такие как отправка почты от имени данного пользователя.
Я выпустил лицензионную библиотеку MIT с открытым исходным кодом, которая позволяет выполнять некоторые базовые операции на PHP с помощью веб-служб Exchange.
Я тестировал его только в Linux, но не вижу причин, по которым он не работал бы и при установке PHP в Windows.
Я не могу рекомендовать библиотеку Объектов данных для выкупа Дмитрия Стреблеченко достаточно высоко. Это COM-компонент, который предоставляет разумный API для расширенного MAPI, и его приятно использовать. Цели API Exchange переходят от одного выпуска к следующему: "Используйте диск M:! Нет, используйте WebDAV! Нет, используйте ExOLEDB!… Нет, используйте веб-сервисы!", единственной константой которого является старый добрый MAPI.
Я не разработчик PHP, но Google говорит, что PHP 5+ может создавать экземпляры COM-компонентов. Если вы можете установить Outlook на коробку, вы могли бы написать веб-службу PHP вокруг компонента COM для обработки необходимых вам запросов.
$outlook = COM("Outlook.Application")
Я бы заглянул в IMAP
Это расширение Zarafa PHP MAPI выглядит так, как будто оно может работать.
Я бы рекомендовал использовать " Веб-сервисы обмена PHP" или короткие php-ews.
Достаточное количество документации в вики очень помогло мне.