2017-08-09 1 views
2

J'essaye de télécharger des pièces jointes pour un certain nombre de fichiers .msg qui résident dans un dossier (pas dans Outlook en particulier).Enregistrement de pièces jointes à partir de fichiers .msg avec python

import win32com.client 
import os 
path = 'C:\\Users\\my_messages\\' 
files = [f for f in os.listdir(path) if '.msg' in f] 
print files 
for file in files: 
    outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 
    msg = outlook.OpenSharedItem(os.path.join(path, file)) 
    att=msg.Attachments 
    for i in att: 
     i.SaveAsFile(os.path.join(path, i.FileName)) 

Je continue à obtenir cette erreur, ce qui me conduit à croire que la bibliothèque win32com a des problèmes. Toute aide est très appréciée.

IOError: [Errno 2] No such file or directory: u'C:\\Python27\\lib\\site-packages\\win32com\\gen_py\\00062FFF-0000-0000-C000-000000000046x0x9x6\\ItemEvents.py.temp' 

L'erreur est générée sur cette ligne:

msg = outlook.OpenSharedItem(os.path.join(path, file)) 
+0

Avez-vous considéré l'une des solutions existantes telles que https://github.com/mattgwwalker/msg-extractor plutôt que d'écrire les vôtres? Si rien d'autre, vous pouvez au moins regarder comment ils le font. –

+0

Merci, j'ai essayé d'utiliser leur exemple de 'python ExtractMsg.py exemple.msg' mais obtenir l'erreur:' ne peut pas ouvrir le fichier 'ExtractMsg': [Errno 2] Aucun fichier ou répertoire'. si je lance 'import ExtractMsg', je n'ai aucun problème. Peut-être que j'ai juste besoin de creuser le code de la bibliothèque. – user2242044

+0

Cela a bien fonctionné pour moi avec 'Python 3.6.0' installé avec' Anaconda'. Comment avez-vous installé la bibliothèque 'win32com'? – Adonis

Répondre

0

La question ici était un problème avec le Python de la bibliothèque utilisait, comme le démontre:

  • pypiwin32 (et plus particulièrement l'appel outlook.OpenSharedItem) fonctionne avec Python2.7 sur une nouvelle installation
  • L'OP a réussi à le faire fonctionner après copie g le dossier de la bibliothèque (site-packages\win32com) à partir d'un travail d'installation à son origine (défectueuse) installer

Plus enquête serait nécessaire d'avoir une réponse plus claire, au moins la copie d'une version de travail de la bibliothèque win32com à la problématique L'installation fournit une solution de contournement pour ce problème.