Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Jna et MS Office Outlook


Sujet :

Entrée/Sortie Java

  1. #1
    Membre expérimenté
    Jna et MS Office Outlook
    Bonjour,
    Je cherche à manipuler depuis du code Java les dossiers visibles dans mon application locale MS Outlook, ainsi que les archives (pst/ost).
    J'ai cru comprendre que jna me permettrait de le faire en sollicitant directement les fonctions des librairies de MS Outlook, mais je ne sais pas comment m'y prendre ?
    J'ai pas mal cherché sur le net, mais les seules solutions que je trouve sont orientées Web REST et je n'ai ni besoin ni envie de passer par du html pour faire des manipulations locales.
    J'ai aussi vu quelques discussions sur COM ou DCOM, mais je n'ai pas compris grand chose si ce n'est que ce serait plutôt via ces dernières que je pourrai trouver une solution.
    Quelqu'un pourrait-il me donner une piste ?
    Savoir par où commencer ?
    Où trouver la documentation des librairies de MS Outlook ?
    Merci.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  2. #2
    Expert confirmé
    Tout dépend de l'interface qui t'es proposée, pour faire du JNA, il te faut des fonctions exposées dans des libraires partagées (dll, so)

    si tu n'as pas de dll/so à attaquer, alors c'est mort pour JNA
    Play50HZ, le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  3. #3
    Membre expérimenté
    Merci Yidiz,
    Cela je l'avais compris. Mais je n'ai pas trouvé le moyen de mettre en œuvre ces mécanismes.
    Il existe bien des librairies Java toutes faites qui permettent de piloter le client Outlook et de le manipuler intégralement depuis du code Java, mais aucune n'est opensource ni gratuite et coûte le peau des fesses.
    De plus, mon besoin est très limité, je n'ai pas besoin de manipuler le compte, ni les contacts ni le calendrier ou les tâches ou les notes, bref, tout ce dont j'ai besoin c'est de trouver un moyen de lister les archives pst montées dans Outlook, de copier des mails du compte principal vers elles, d'en créer, monter/démonter d'autres par programmation.
    J'ai cru comprendre que d'utiliser COM Automation était possible avec jna, et j'ai même cru comprendre qu'il existait des wrappers jna spécifiques qui dans le cas d'Office intègrent déjà les interfaces permettant de solliciter les fonctions Office depuis jna.
    C'est cet aspect qui m’intéresse et que je n'arrive pas à mettre en œuvre. Je ne trouve même pas de tuto...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  4. #4
    Membre expérimenté
    Ok, je vais faire le point sur mes avancées.
    JNA permet à Java d'accéder plus facilement au code natif de l'OS hôte que JNI son prédécesseur, dans le sens où il nous permet de nous affranchir de l'écriture de fichiers d'entêtes et de compilation de dll par la simple écriture d'interfaces Java.
    JNA offre donc la possibilité de solliciter directement depuis du code Java des fonctions natives du système Windows.
    Dans mon cas, je voudrais manipuler Outlook, ce qui n'est pas la même chose, donc, JNA tout seule ne suffit pas.
    En cherchant sur Internet, j'ai trouvé une solution "intermédiaire" : JACOB
    Une librairie Java qui implémente un ensemble d'interfaces représentant tous les wrappers JNA nécessaires pour utiliser la technologie COM Automation de Microsoft. Il s'avère que même les toutes dernières version de Microsoft Office supportent les appels COM Automation.
    Donc, cette librairie devrait me permettre de manipuler le modèle objet Outlook depuis du code Java, ce que je cherche à faire.
    En fait, j'aurai espéré trouver une librairie réunissant des wrappers directement liés aux fonctions de Outlook plutôt que de passer par COM Automation, mais je n'ai rien trouvé de mieux.
    De plus, l'utilisation de JACOB ne m'affranchit pas de l'étude du modèle objet Outlook.
    Moralité, en attendant de maîtriser JACOB, j'étudie par le biais de VBA ce fameux modèle Objet.
    Mais si parmi vous d'autres personnes auraient d'autres solutions à me proposer, je suis preneur.
    Et surtout, si je me trompes dans mon analyse ci-dessus, n'hésitez pas à me corriger.
    Merci.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Membre expérimenté
    Bon, ça n'est pas dans mes habitudes, mais j'ai laissé tombé le projet de créer mon programme en Java. Beaucoup trop compliqué, surtout si Outlook n'est pas lancé, auquel cas il faut se taper toute la partie identification, s'agissant d'un serveur Exchange, c'est pas gagné. Bref, je me suis rabattu sur l'écriture d'une macro VB dans Outlook.
    Merci à tous ceux qui se seront donnés la peine de me lire et d'avoir réfléchi à la question.
    Donc, pour ne pas encombrer les tuyaux, je vais notifier cette discussion comme résolue.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  6. #6
    Responsable Java

    Bonjour,

    Je suis peut être hors sujet au vu de ta demande mais puisque tu veux manipuler des composants Outlook, pourquoi ne pas utiliser les technologies Outlook justement. Un plugin VSTO sur Outlook, ça se fait bien en C# ou VB.NET. Et dans ce cas, son intégration avec Outlook est totale.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  7. #7
    Membre expérimenté
    Salut Robin56,
    Tu as tout à fait raison, ce sera bien plus simple. Mais je penses que je peux même en rester à une bonne vieille macro VB construite dans Outlook.
    En fait, notre messagerie pro. est sujette et c'est bien normale au quota. Cependant, nos équipes commerciales deviennent folles car le quota est un peu faible par rapport à leur volume de mails et il passe le plus clair de leur temps à faire du ménage.
    Comme nous faisons parti aujourd'hui d'une grande structure, on sera tous à la retraite quand on aura parcouru toute la procédure pour demander l'élévation de ce quota.
    Alors j'ai eu cette idée de faire une sorte de petit moteur/service local qui s'occuperait de surveiller le poids de la b.a.l., et entreprendrait à son initiative d'effectuer une décharge automatique des mails les plus anciens dans un pst local.
    Tout en permettant d'y rechercher des choses.
    Tu me diras que Outlook à son niveau gère très bien ses archives, seulement voilà, nous n'avons pas accès à ces réglages (politique très sécurisé et restrictive). Ce qui est assez contradictoire puisque on peut accéder à VBA et faire des macros, mais bon, allez comprendre. À notre niveau, nous n'avons pas toutes les données du problème, ces restrictions sont certainement justifiées.
    J'avais donc pensé dans un premier temps créer un véritable service indépendant de Outlook, mais la sécurité de nos systèmes en matière d'identification rendrait la tâche très compliquée et nécessiterait l'avale des décideurs, ce qui au final prendrait autant de temps que si on demandait l'élévation du quota. Et c'est en bidouillant en VBA dans Outlook afin d'étudier le modèle objet Outlook que je me suis rendu compte qu'il me serait bien plus simple de réaliser ses opérations dans une macro. En plus, en faisant ainsi, l'utilisateur n'aura accès à ce code que dans Outlook, lorsqu'il est déjà connecté au serveur Exchange. Ce qui m'affranchit de la partie identification.
    Bref, c'est pourquoi j'ai opté pour une simple macro en VBA.
    En tous cas, merci du conseil, je ne manquerai pas de jeter un oeil sur ce plugin VSTO. Par contre, je ne connaît pas VB.net (il ne m'a jamais intéressé), et je ne sais pas programmer en Csharp. Par contre, j'ai déjà développé des choses en VBA pour Office, alors, je penses que je vais en rester là.
    Merci beaucoup, et bonne continuation à toi.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

###raw>template_hook.ano_emploi###