Лучший способ получить доступ к Exchange с помощью PHP?
-
08-06-2019 - |
Вопрос
Я пишу приложение CMS на PHP, и одним из требований является возможность взаимодействия с сервером Exchange клиента.Я уже несколько раз описывал эту функцию и всегда использовал ВебДАВ сделать это, но сейчас я отклоняюсь от этого.
Я буду запускать сайт на IIS ИЛИ Apache (без предпочтений) на сервере Windows 2008.Несколько вещей, которые мне нужно будет сделать, включают добавление контактов в адресную книгу данного пользователя, отправку электронных писем от имени данного пользователя и создание отчетов о контактах для пользователя.
Все это довольно легко сделать с помощью WebDAV, но если и существует лучший способ, не требующий каких-либо функций, то он, скорее всего, в ближайшее время станет устаревшим.
Есть идеи?
Обновлять:
Джастин, мне нравится идея использования com-объектов, я просто беспокоюсь о поддержке третьего продукта, чтобы все работало...
Джон, я могу написать веб-сервис на C# для взаимодействия с этими функциями и доступа к нему с помощью моего PHP-приложения, но это тоже немного не по пути.
Пока что я не на 100% уверен, что какой-либо из них лучше, чем WebDAV...
Кто-нибудь может показать мне, где я веду себя глупо?
Решение
Я не использовал для этого PHP, но у меня есть опыт использования C # для достижения того же самого.
API Outlook — это способ автоматизации Outlook вместо прямого подключения к Exchange.Ранее я использовал этот подход в приложении C#, и он работает, хотя и может содержать ошибки.
Если вы хотите подключиться напрямую к серверу Exchange, вам потребуется изучить расширенный MAPI.
Раньше я использовал эту обертку МАПИEx:Расширенная оболочка MAPI.
Это проект C#, но я считаю, что вы можете использовать некоторый код .NET на сервере PHP5 Windows.В качестве альтернативы у него есть базовая DLL C++, которую вы можете использовать.Я считаю, что это очень хорошо, и есть несколько хороших примеров приложений.
Обновлять:
Извините за задержку, пока нет способа отслеживать сообщения.
Я согласен, что добавлять больше слоев в ваше приложение и полагаться на сторонний код может быть страшно (и это справедливо).
Сегодня я прочитал еще одно интересный пост помечен как MAPI и посвящен другой теме.Однако ключевым моментом здесь является то, что это связано с эта важная статья MS.До сих пор мне не было известно о проблемах, связанных с использованием управляемого кода для взаимодействия с MAPI, хотя эта ошибка не должна влиять на код C++ в компоненте, поскольку он неуправляемый.
В этой записи блога также предлагаются другие способы подключения к серверу MAPI/Exchange.В данном случае из-за этих новых фактов http://us3.php.net/imap может быть ответом, предложенным другим пользователем.
Другие советы
Ваш клиент использует Exchange 2007?Если да, то я бы посмотрел Веб-службы обмена.Если нет, то, как бы сложно это ни было, я думаю, что WebDAV — ваш лучший выбор.
Лично мне не нравится использовать маршрут COM-объекта Outlook.Application, поскольку его безопасность подсказывает («Приложение пытается получить доступ к вашим контактам.Разрешить это?» и т. д.) может вызвать проблемы на сервере.Я также думаю, что с помощью Outlook будет сложно выполнять задачи, связанные с выдачей себя за другое лицо, например, отправлять почту от имени заданного пользователя.
Я выпустил лицензированную MIT библиотеку с открытым исходным кодом, которая позволяет выполнять некоторые базовые операции на PHP с помощью веб-служб Exchange.
Я тестировал его только на Linux, но не вижу причин, по которым он не работал бы и на установке PHP в Windows.
Не могу порекомендовать Дмитрия Стреблеченко. Объекты данных погашения библиотека достаточно высоко.Это COM-компонент, который предоставляет разумный API для расширенного MAPI, и его приятно использовать.Цели Exchange API переходят от одной версии к другой:"Используй их:водить машину!Нет, используйте WebDAV!Нет, используйте exoledb!… Нет, используйте веб -сервисы! » с единственной постоянной быть старым добрым мапри.
Я не разработчик PHP, но Google говорит, что PHP 5+ может создавать экземпляры COM-компонентов.Если вы можете установить Outlook на компьютере, вы можете написать веб-службу PHP на основе COM-компонента для обработки необходимых вам запросов.
$outlook = COM("Outlook.Application")
Я бы рекомендовал использовать "Веб-службы PHP Exchange" или короткий php-ews.
Достаточное количество документации согласно вики, мне очень помогло.
Этот Зарафа PHP MAPI расширение выглядит так, как будто оно может работать.
Я бы посмотрел на IMAP
https://github.com/Garethp/php-ews
Последний раз оно обновлялось 3 месяца назад, поэтому оно сохраняется.