Я пишу приложение 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.
Слишком много документации по вики , мне очень помогло.