Сведения о вопросе

rjevskii

16:03, 1st July, 2020

Теги

php   windows   exchange-server   webdav   mapi    

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

Просмотров: 577   Ответов: 9

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

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

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

Есть какие-нибудь идеи?

Обновление:

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

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

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

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



  Сведения об ответе

repe

18:03, 1st July, 2020

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

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

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

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

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

Обновление:

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

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

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

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


  Сведения об ответе

KOMP

18:03, 1st July, 2020

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

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


  Сведения об ответе

COOL

18:03, 1st July, 2020

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

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

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


  Сведения об ответе

VERSUION

18:03, 1st July, 2020

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


  Сведения об ответе

ITSME

18:03, 1st July, 2020

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

$outlook = COM("Outlook.Application")

Outlook API реферанс


  Сведения об ответе

fo_I_K

18:03, 1st July, 2020

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


  Сведения об ответе

прога

18:03, 1st July, 2020

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

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


  Сведения об ответе

LIZA

18:03, 1st July, 2020

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

IMAP, POP3 и NNTP


  Сведения об ответе

lourence

18:03, 1st July, 2020

https://github.com/Garethp/php-ews

Он был последний раз обновлен 3 месяца назад, поэтому он поддерживается


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться