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

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

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

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

Есть идеи?

Обновить:

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

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

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

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

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

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

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

Раньше я использовал эту оболочку MAPIEx: Extended MAPI Wrapper .

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

Обновить:

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

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

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

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

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

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

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

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

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

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

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

$outlook = COM("Outlook.Application") 

Ссылка на API Outlook

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

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

IMAP, POP3 и NNTP

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

Слишком много документации по вики , мне очень помогло.