2017-07-22 3 views
0

J'ai créé un programme pour quand l'utilisateur l'exécute, il envoie une pièce jointe par e-mail. Le bon code est quand un utilisateur différent l'exécute, le code doit être changé pour l'utilisateur différent (ce qui n'est pas efficace). Existe-t-il un code python pour identifier la personne qui exécute l'adresse e-mail Outlook du programme et l'envoie à lui-même. J'utilise win32com.win32com - code python pour identifier votre propre adresse e-mail dans Outlook?

au lieu de

mail.to "email address" 

à

mail.to "user of the program" 
+0

Pour répondre à votre deuxième question, je voudrais vérifier [cette question sur l'utilisation du module os] (https://stackoverflow.com/questions/842059/is-there-a-portable-way-to-get-the- current-username-in-python) et si tout ce dont vous avez besoin est le nom d'utilisateur, il devrait fonctionner. S'il y a d'autres facteurs qui pourraient changer l'adresse e-mail dans Outlook ou exiger un peu plus d'exactitude, il faudrait appeler l'ADSI et je voudrais jeter un coup d'oeil à [this] (https://stackoverflow.com/questions/18146970/how- to-get-process-owner-by-python-using-wmi). Si vous avez vraiment besoin de l'adresse électronique affectée par ADSI à MAPI - utilisez PS et dirigez la sortie – JGreenwell

+0

Fondamentalement, ADSI (Active Directory Service Interfaces) est juste une partie des interfaces COM qui inclut le nom d'utilisateur. MAPI (Messaging Application Programming Interface) est une API connectée à Outlook. PS est Powershell (essentiellement le langage de script Windows). Beaucoup de travail que je fais avec les systèmes MS Je commence avec un wrapper PS qui saisit juste un tas d'informations et le transmet au programme Python qui fait ensuite le travail (généralement après avoir placé l'info dans un dict, appelé tuple, ou le passer à une classe). – JGreenwell

+0

Merci pour l'abondance de l'information, mais ce qui est ADSI et MAPI, et utiliser PS et tuyau la moyenne de sortie et comment cette méthode ou processus utiliser? Combien de temps dure ce processus? Je suppose que s'il y a beaucoup de courriels dans le système, cela prend beaucoup de temps à traiter? L'email est imprévisible dans le sens où pour certaines personnes il peut s'agir de pré[email protected] ou d'autres nom de famille. Pré[email protected] ou pré[email protected] etc – Johnseito

Répondre

0

En utilisant le modèle d'objet Outlook, lisez la propriété Application.Session.CurrentUser.Address. Dans le cas d'Exchange, l'adresse SMTP peut être récupérée à partir de Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress (soyez prêt à gérer les valeurs nulles et les exceptions).