58 votes

Meilleur moyen d'accéder à Exchange en utilisant PHP ?

J'écris une application CMS en PHP et l'une des exigences est qu'elle doit être capable de s'interfacer avec le serveur Exchange du client. J'ai déjà écrit cette fonctionnalité à plusieurs reprises et j'ai toujours utilisé la méthode suivante WebDAV pour le faire, mais maintenant je m'éloigne de ça.

Je vais faire fonctionner le site sur IIS ou Apache (sans préférence) sur un serveur Windows 2008. J'aurais notamment besoin d'ajouter des contacts au carnet d'adresses d'un utilisateur donné, d'envoyer des courriels en tant qu'utilisateur donné et d'exécuter des rapports sur les contacts d'un utilisateur.

Tout cela est assez facile à faire avec WebDAV, mais s'il existe un meilleur moyen qui ne nécessite aucune fonctionnalité susceptible d'être dépréciée dans un avenir proche.

Des idées ?

Mise à jour :

Justin, j'adore l'idée d'utiliser des objets com, mais je m'inquiète de la maintenance d'un troisième produit pour que tout fonctionne...

John, je peux écrire un service web en C# pour m'interfacer avec ces fonctions et y accéder avec mon application PHP, mais c'est aussi un peu à l'écart.

Jusqu'à présent, je ne suis pas convaincu à 100 % que l'une ou l'autre de ces solutions est meilleure que WebDAV... Quelqu'un peut-il me montrer où je suis stupide ?

24voto

John Points 9543

Je n'ai pas utilisé PHP pour ce faire mais j'ai de l'expérience dans l'utilisation de C# pour réaliser la même chose.

L'API Outlook est un moyen d'automatiser Outlook plutôt que de se connecter directement à Exchange. J'ai déjà utilisé cette approche dans une application C# et cela fonctionne bien que cela puisse être bogué.

Si vous souhaitez vous connecter directement au serveur Exchange, vous devrez effectuer une recherche MAPI étendue.

Dans le passé, j'ai utilisé cet emballage MAPIEx : enveloppeur MAPI étendu .

Il s'agit d'un projet C#, mais je pense que vous pouvez utiliser du code .NET sur un serveur Windows PHP5. Alternativement, il y a une DLL C++ que vous pouvez utiliser. Je l'ai trouvé très bon et il y a quelques bons exemples d'applications.

Mise à jour :

Désolé pour le retard, il n'y a pas encore de moyen de suivre les messages.

Je suis d'accord pour dire qu'ajouter une couche supplémentaire à votre application et s'appuyer sur du code tiers peut être effrayant (et à juste titre).

Aujourd'hui, j'ai lu un autre poste intéressant étiqueté comme MAPI qui est sur un sujet différent. L'élément clé ici est qu'il est lié à cet important article sur la SEP . Jusqu'à présent, je n'étais pas au courant des problèmes liés à l'utilisation de code géré pour l'interface avec MAPI, bien que le code C++ du composant ne devrait pas être affecté par cette erreur puisqu'il n'est pas géré.

Cet article de blog suggère également d'autres façons de se connecter au serveur MAPI/Exchange. Dans ce cas, en raison de ces nouveaux faits http://us3.php.net/imap peut être la réponse comme suggéré par l'autre utilisateur.

14voto

Mike Powell Points 2913

Votre client utilise-t-il Exchange 2007 ? Si c'est le cas, je jetterais un coup d'œil à Services Web Exchange . Sinon, même si cela peut être difficile, je pense que WebDAV est votre meilleure option.

Personnellement, je n'aime pas utiliser la route de l'objet COM Outlook.Application, car ses invites de sécurité ("Une application tente d'accéder à vos contacts. Autoriser cela ?", etc.) peuvent causer des problèmes sur un serveur. ) peuvent causer des problèmes sur un serveur. Je pense également qu'il serait difficile d'accomplir vos tâches d'usurpation d'identité à l'aide d'Outlook, telles que l'envoi de courrier en tant qu'utilisateur donné.

12voto

Riley Dutton Points 2041

J'ai publié une bibliothèque open-source sous licence MIT qui vous permet d'effectuer quelques opérations de base en PHP en utilisant les services Web d'Exchange.

Services Web Exchange pour PHP

Je ne l'ai testé que sur Linux, mais je ne vois pas pourquoi il ne fonctionnerait pas aussi sur une installation Windows de PHP.

10voto

Duncan Smart Points 9195

Je ne peux pas recommander le livre de Dmitry Streblechenko. Objets de données de rachat Je ne saurais trop recommander cette bibliothèque. Il s'agit d'un composant COM qui fournit une API saine pour Extended MAPI et qui est très facile à utiliser. Les poteaux de but de l'API Exchange changent d'une version à l'autre : "Utilisez le lecteur M: ! Non, utilisez WebDAV ! Non, utilisez ExOLEDB Non, utilisez les services Web", la seule constante étant le bon vieux MAPI.

7voto

Justin Walgran Points 552

Je ne suis pas un développeur PHP mais Google dit que PHP 5+ peut instancier des composants COM. Si vous pouvez installer Outlook sur une boîte, vous pouvez écrire un service web PHP autour du composant COM pour gérer les requêtes dont vous avez besoin.

$outlook = COM("Outlook.Application")

Référence à l'API Outlook

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X