Question

J'écris une application CMS en PHP et l'une des exigences est qu'elle doit pouvoir s'interfacer avec le serveur Exchange du client.J'ai déjà écrit cette fonctionnalité plusieurs fois et je l'ai toujours utilisée WebDAV pour le faire, mais maintenant je m'en éloigne.

J'exécuterai le site sur IIS OU Apache (aucune préférence) sur le serveur Windows 2008.Certaines choses que je devrais faire incluent l'ajout de contacts au carnet d'adresses d'un utilisateur donné, l'envoi d'e-mails en tant qu'utilisateur donné et l'exécution de rapports sur les contacts d'un utilisateur.

Tout cela est assez facile à faire avec WebDAV, mais s'il existe une meilleure méthode qui ne nécessite aucune fonctionnalité, elle sera probablement obsolète de sitôt.

Des idées?

Mise à jour:

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

John, je peux écrire un service Web en C# avec lequel interfacer 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'un ou l'autre soit meilleur que WebDAV...

Quelqu'un peut-il me montrer où je fais des bêtises ?

Était-ce utile?

La solution

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à adopté cette approche dans une application C# et cela fonctionne même s'il peut y avoir des bugs.

Si vous souhaitez vous connecter directement au serveur Exchange, vous devrez rechercher MAPI étendu.

Dans le passé, j'utilisais ce wrapper MAPIEx :Wrapper MAPI étendu.

C'est un projet C# mais je pense que vous pouvez utiliser du code .NET sur un serveur Windows PHP5.Alternativement, il dispose d’une DLL de base C++ que vous pourrez peut-être utiliser.Je l'ai trouvé très bon et il existe de bons exemples d'applications.

Mise à jour:

Désolé pour le retard, il n'existe pas encore de moyen actuel de suivre les publications.

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

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

Cette entrée de blog suggère également d'autres moyens 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 suggérée par l'autre utilisateur.

Autres conseils

Votre client utilise-t-il Exchange 2007 ?Si c'est le cas, j'irais voir Services Web d'échange.Sinon, aussi compliqué que cela puisse être, je pense que WebDAV est votre meilleur choix.

Personnellement, je n'aime pas utiliser la route des objets COM Outlook.Application, comme le demande sa sécurité ("Une application tente d'accéder à vos contacts.Autoriser cela ?", etc.) peuvent poser 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, comme l'envoi de courrier en tant qu'utilisateur donné.

J'ai publié une bibliothèque open source sous licence MIT qui vous permet d'effectuer certaines opérations de base en PHP à l'aide des services Web Exchange.

Services Web Exchange pour PHP

Je ne l'ai testé que sous Linux mais je ne vois aucune raison pour laquelle cela ne fonctionnerait pas également sur une installation Windows de PHP.

Je ne peux pas recommander celui de Dmitry Streblechenko Objets de données de rachat bibliothèque assez fortement.Il s'agit d'un composant COM qui fournit une API saine pour Extended MAPI et qui est agréable à utiliser.Les objectifs de l'API Exchange passent d'une version à l'autre :"Utilise les:conduire!Non, utilisez WebDAV !Non, utilisez EXOLEDB!… Non, utilisez des services Web! » avec la seule constante étant le bon vieux Mapi.

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 machine, 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 de l'API Outlook

Je recommanderais d'utiliser "Services Web d'échange PHP" ou court php-ews.

Une bonne quantité de documentation sous le wiki, m'a beaucoup aidé.

Ce Zarafa PHPMAPI l'extension semble pouvoir fonctionner.

je me pencherais sur IMAP

IMAP, POP3 et NNTP

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

Il a été mis à jour pour la dernière fois il y a 3 mois, il est donc maintenu

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top