Comment identifier un mail qui est en lecture

Fermé
Enygma - Modifié le 7 févr. 2022 à 16:55
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 - 9 févr. 2022 à 12:22
Salut tout le monde !

En ce moment je bosse sur un projet qui consiste a récupérer le mail qui est en train d'être lu par l'utilisateur.

Lorsque l'utilisateur (moi) clique sur l'icone symbolisant mon programme, le programme récupère le mail Outlook affiché à l'écran.

Pour faire ça j'ai notamment utiliser la bibliothèque IMAPLIB et EMAIL pour récupérer tout les mails non lus présent dans la boîte mails, toutefois cette méthode n'est pas assez précise (elle ne permet pas de récupérer le mail si convoité).

Je me suis donc tourner vers l'API REST de Outlook pour voir si je trouvais quelque chose, mais je n'est malheureusement rien trouver de très intéressant...

Si quelqu'un a une idée sur la manière de solutionner mon problème je suis preneur!
A voir également:

5 réponses

barnabe0057 Messages postés 14445 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 26 mai 2024 4 909
Modifié le 6 févr. 2022 à 19:46
Bonjour,

Dans un premier temps il faudrait récupérer l'id du message ciblé via l'url dans la barre d'adresse du navigateur.

Dans un deuxième temps il faudrait envoyer une requête à l'API avec l'identifiant de message pour pouvoir récupérer le message ciblé.


0
Bonsoir barnabe0057,

Merci pour ta réponse, toutefois j'aimerais récupérer le mail sur le logiciel Outlook et non sur le site internet.
0
barnabe0057 Messages postés 14445 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 26 mai 2024 4 909
Modifié le 6 févr. 2022 à 20:00
Tu veux le récupérer sous quel format ?

Quelle version d'Outlook utilises-tu ?

Ceci devrait t'aider : https://www.codetwo.com/kb/messageid/
0
Enygma > barnabe0057 Messages postés 14445 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 26 mai 2024
7 févr. 2022 à 14:22
Idéalement j'aimerais récupérer tout le corps du mail (texte, pièce jointe...), comme simple str qui serais stocké dans une variable pour pouvoir ensuite traiter les informations récolter.

J'utilise actuellement la dernière version d'Outlook à savoir la version de 2021.

Merci je vais regarder ça ce soir.
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675
6 févr. 2022 à 23:01
Bonjour,

En VBA ( et /ou avec tout langage permettant de manipuler le DDE ), sur les anciennes versions d'outlook (et sûrement celles d'aujourd'hui aussi ) tu pouvais utiliser un truc du genre :
Dim currentMail As Outlook.MailItem
 Set currentMail = Application.ActiveInspector.currentItem

pour "récupérer" l'email en cours de lecture.

A voir ce que tu peux faire avec ensuite ..



0
Bonjour jordane45,

Merci pour ta réponse !

Malheureusement je n'es aucune connaissance en VBA...
Serais tu comment executer ton script avec python afin de pouvoir l'essayer ?
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675 > Enygma
7 févr. 2022 à 16:25
renseignes toi sur
 import win32com.client as win32

https://pbpython.com/windows-com.html
0
yg_be Messages postés 22846 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 juin 2024 1 473
7 févr. 2022 à 22:53
bonjour jordane,
je me demande si cet Application.ActiveInspector.currentItem n'exige pas de tourner dans l'application Outlook elle-même.
Ou peut-être dans une instance Outlook démarrée par le VBA.
Ici, Enygma souhaite interagir avec une instance Outlook indépendante du code VBA.
Je me demande dans quelle mesure une instance Outlook démarrée par un utilisateur va accepter d'être manipulée par du code VBA tournant dans une application démarrée ensuite.
0
jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024 4 675 > yg_be Messages postés 22846 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 juin 2024
Modifié le 7 févr. 2022 à 23:22
Non.
Je ne lui ai pas conseillé d'utiliser du VBA mais de sens inspirée pour coder via les interface com.

C'est le principe des interfaces com ou dde.
On peut les manipuler depuis à langage externe.
À l'époque j'ai eu à coder différents script ( en autoit et/ou en c# ) pour manipuler Outlook ou Lotus notes ou excel ou des progiciels divers..
Les interfaces com et dde permettaient d'accéder aux fonctionnalités de c'est logiciel sans avoir à simuler des éventuels clics ou appuis sur clavier.
Et dans 99 % des cas, la syntaxe utilisée et très très proche de langage interne de ces logiciel le VBA pour les applications Microsoft le lotus script pour Lotus notes ...etc...
Il existe même un utilitaire qui permet d'avoir la liste des différentes interface comme des logiciel installé sur ton ordinateur.
(Par contre je n'ai plus son nom désolé)
0
yg_be Messages postés 22846 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 juin 2024 1 473 > jordane45 Messages postés 38201 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 juin 2024
8 févr. 2022 à 11:22
Je pensais que cela ne permettait de manipuler que des instances de logiciel démarrés dans ce contexte, pas des instances indépendantes.
Que, si l'utilisateur a démarré une instance Word pour y travailler interactivement, il n'était pas possible, via du VBA en Excel, de manipuler cette instance de Word.
0
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 7 756
7 févr. 2022 à 16:58
Bonjour,

Avant d'aller plus avant, peux-tu nous en dire un peu plus sur ton projet ? Quel est son but final ?

De plus il paraît assez étonnant de se focaliser sur un client mail particulier sachant que de nos jours beaucoup de gens utilise soit un webmail, soit un autre client mail (e.g. thunderbird ou une autre version d'outlook).

Ensuite, à moins que le client mail concerné n'offre une API pour voir quel email est sélectionné, je ne vois pas trop comment tu peux t'en sortir proprement.

Bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonsoir mamiemando,

Oui bien-sur ! Alors mon but final est de pouvoir automatiser la récupération de mails "important".
C'est a dire lorsque l'utilisateur juge qu'un mail est important il clique sur l'icone de mon programme pour que celui récupérer le mail susnommé et traite les informations afin qu'elles puissent être stocké.

Pour être parfaitement honnête, j'ai déjà réussie a automatiser Gmail en récupérant l'ID du mail dans l'url, et je pense que c'est deux gros client mail vont être largement suffisant pour l'utilisation que je vais en faire.
0
yg_be Messages postés 22846 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 juin 2024 1 473
9 févr. 2022 à 10:06
Outlook, pour toi, c'est le logiciel ou le site web?
0
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 7 756 > yg_be Messages postés 22846 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 juin 2024
9 févr. 2022 à 11:50
@yg_be : voir message #2, le client lourd, pas le webmail

@Enygma :

Ok merci pour ces précisions. Je repartirais de cet exemple qui suit la suggestion de jordane45 (message #7). * Lien vers la documentation de pywin32

De ce que je crois comprendre, pywin32 enveloppe essentiellement des fonctions windows (e.g. DDE, etc.) donc j'imagine que si tu trouves des exemples qui font plus ou moins ce que tu veux en C/C# (comme par exemple cet exemple), tu devrais retrouver tes petits dans la doc de pywin32 (enfin peut-être :p).

Bonne chance
0
yg_be Messages postés 22846 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 juin 2024 1 473 > mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024
9 févr. 2022 à 12:11
Je pense que le code suggéré ne fonctionne que s'il est démarré dans l'instance Outlook, pas dans un autre programme.
0
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 7 756 > yg_be Messages postés 22846 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 juin 2024
Modifié le 9 févr. 2022 à 12:23
@yg_be: je ne connais pas suffisamment windows pour être catégorique, mais pense que c'est justement prévu pour marcher à l'extérieur d'outlook (voir ce lien).

La méthode GetApplicationObject utilise les classes de la bibliothèque de classes .NET Framework pour vérifier et obtenir les processus Outlook s’exécutant sur l’ordinateur local

Dans ma compréhension, c'est un peu la même idée que dbus sous linux, ça permet de faire inter-opérer des applications entre elles, mais peut-être que j'ai mal compris.
0