Лучший способ получить доступ к Exchange с помощью PHP?
Я пишу приложение CMS в PHP, и одним из требований является то, что он должен иметь возможность взаимодействовать с сервером Exchange клиента. Я написал эту функцию несколько раз раньше и всегда использовал WebDAV, но теперь я отказываюсь от этого.
Я буду запускать сайт в IIS или Apache (без предпочтений) на сервере Windows 2008. Несколько вещей, которые мне нужно будет сделать, включают добавление контактов в данную адресную книгу пользователя, отправку писем в качестве данного пользователя и запуск отчетов по контакты для пользователя.
Все это довольно просто сделать с WebDAV, но если есть лучший способ, который не требует каких-либо функциональных возможностей, которые могут быть устарели в ближайшее время.
Любые идеи?
Обновление:
Джастин, мне нравится идея использования ком-объектов, я просто беспокоюсь о поддержании третьего продукта, чтобы все работало...
Джон, я могу написать веб-службу на С# для взаимодействия с этими функциями и получить доступ к ней с помощью моего PHP-приложения, но это также немного в стороне.
До сих пор я не уверен на 100%, что любой из них лучше, чем WebDAV...
Может ли кто-нибудь показать мне, где я глуп?
Ответы
Ответ 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
Ответ 6
Этот расширение Zarafa PHP MAPI выглядит так, как будто оно может работать.
Ответ 7
Я бы посмотрел IMAP
IMAP, POP3 и NNTP
Ответ 8
Я бы рекомендовал использовать " PHP Exchange Web Services или короткие php-ews.
Справедливая сумма документации по wiki мне очень помогла.