Pregunta

Estoy escribiendo una aplicación CMS en PHP y uno de los requisitos es que pueda interactuar con el servidor Exchange del cliente.He escrito esta funcionalidad varias veces antes y siempre la he usado WebDAV hacerlo, pero ahora me estoy alejando de eso.

Ejecutaré el sitio en IIS O Apache (sin preferencia) en Windows Server 2008.Algunas cosas que tendría que hacer incluyen agregar contactos a la libreta de direcciones de un usuario determinado, enviar correos electrónicos como un usuario determinado y ejecutar informes sobre los contactos de un usuario.

Todo esto es bastante fácil de hacer con WebDAV, pero si hay una manera mejor que no requiera ninguna funcionalidad, es probable que quede obsoleta en el corto plazo.

¿Algunas ideas?

Actualizar:

Justin, me encanta la idea de usar objetos com, solo me preocupo por mantener un tercer producto para que todo funcione...

John, puedo escribir un servicio web en C# para interactuar con estas funciones y acceder a él con mi aplicación PHP, pero también está un poco apartado.

Hasta ahora, no estoy 100% convencido de que ninguno de estos sea mejor que WebDAV...

¿Alguien puede mostrarme dónde estoy haciendo el tonto?

¿Fue útil?

Solución

No he usado PHP para hacer esto pero tengo experiencia en el uso de C# para lograr lo mismo.

La API de Outlook es una forma de automatizar Outlook en lugar de conectarse directamente a Exchange.Anteriormente adopté este enfoque en una aplicación C# y funciona, aunque puede tener errores.

Si desea conectarse directamente al servidor Exchange, deberá buscar MAPI extendido.

En el pasado usé este envoltorio. MAPIEx:Envoltorio MAPI extendido.

Es un proyecto de C# pero creo que puedes usar algo de código .NET en un servidor PHP5 de Windows.Alternativamente, tiene una DLL central de C++ que quizás puedas usar.Me ha parecido muy bueno y hay algunas buenas aplicaciones de ejemplo.

Actualizar:

Perdón por el retraso, todavía no hay forma de realizar un seguimiento de las publicaciones.

Estoy de acuerdo en que agregar más capas a su aplicación y confiar en código de terceros puede dar miedo (y con razón).

Hoy leo otro publicación interesante etiquetado como MAPI que trata sobre un tema diferente.Sin embargo, la clave aquí es que se ha vinculado a este importante artículo sobre EM.Hasta ahora no he tenido conocimiento de los problemas relacionados con el uso de código administrado para interactuar con MAPI, aunque el código C++ en el componente no debería verse afectado por este error ya que no está administrado.

Esta entrada de blog también sugiere otras formas de conectarse al servidor MAPI/Exchange.En este caso debido a estos nuevos hechos http://us3.php.net/imap puede ser la respuesta sugerida por el otro usuario.

Otros consejos

¿Su cliente utiliza Exchange 2007?Si es así echaría un vistazo Servicios web de intercambio.Si no, por más complicado que pueda ser, creo que WebDAV es su mejor opción.

Personalmente, no me gusta usar la ruta del objeto COM Outlook.Application, ya que su seguridad indica ("Una aplicación está intentando acceder a sus contactos.¿Permitir esto?", etc.) puede causar problemas en un servidor.También creo que sería difícil realizar tareas similares a la suplantación de identidad utilizando Outlook, como enviar correo como un usuario determinado.

He lanzado una biblioteca con licencia MIT de código abierto que le permite realizar algunas operaciones básicas en PHP utilizando los servicios web de Exchange.

Intercambio de servicios web por PHP

Sólo lo he probado en Linux, pero no veo ninguna razón por la que no funcione también en una instalación de PHP en Windows.

No puedo recomendar el de Dmitry Streblechenko. Objetos de datos de canje biblioteca lo suficientemente alto.Es un componente COM que proporciona una API sensata para MAPI extendido y es un placer usarlo.Los objetivos de la API de Exchange pasan de una versión a la siguiente:"Usalos, usalos a ellos:¡conducir!No, ¡usa WebDAV!¡No, usa exoledb! ... ¡no, usa servicios web! " con la única constante ser buena vieja Mapi.

No soy un desarrollador de PHP, pero Google dice que PHP 5+ puede crear instancias de componentes COM.Si puede instalar Outlook en una caja, puede escribir un servicio web PHP alrededor del componente COM para manejar las solicitudes que necesita.

$outlook = COM("Outlook.Application")

Referencia de la API de Outlook

Yo recomendaría usar "Servicios web de intercambio PHP" o corto php-ews.

Cantidad justa de documentación bajo el wiki, me ayudo mucho.

Este Zarafa PHP MAPI La extensión parece que podría funcionar.

Yo buscaría en IMAP

IMAP, POP3 y NNTP

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

Se actualizó por última vez hace 3 meses, por lo que se mantiene.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top