Подтвердить что ты не робот

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

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

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

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

Любые идеи?

Обновление:

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Обновление:

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

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Exchange Web Services для PHP

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

Ответ 5

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

$outlook = COM("Outlook.Application")

Ссылка на API Outlook

Ответ 8

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

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