[cdo] Sauver des attachments Outlook de type EmbeddedMessage
Bonjour à tous,
J'ai le problème suivant:
Je reçois un mail contenant des mails en attachment.
Ces mails joints contiennent les informations que je dois traiter, et ce traitement est automatisé.
Je souhaiterais automatiser la sauvegarde de ces attachments.
Basé sur différentes sources trouvées sur le Web, et notamment cdo, j'ai le code suivant. (voir en fin de post)
Pour tout attachment de type .jpg, .py, etc..., càd autre qu'un mail joint, aucun problème. Le fichier est correctement sauvé.
Mais dans le cas d'un mail, j'ai l'exception suivante:
Citation:
Traceback (most recent call last):
File "C:\Workspaces\JunkRoom\src\OutlookConnect.py", line 25, in ?
attachment.WriteToFile(filename)
File "C:\Python23\lib\site-packages\win32com\gen_py\3FA7DEA7-6438-101B-ACC1-00AA00423326x0x1x21\Attachment.py", line 49, in WriteToFile
return self._ApplyTypes_(133, 1, (12, 0), ((12, 1),), 'WriteToFile', None,FileName
File "C:\Python23\lib\site-packages\win32com\client\__init__.py", line 446, in _ApplyTypes_
return self._get_good_object_(
pywintypes.com_error: (-2147352567, 'Exception occurred.', (1258, 'Collaboration Data Objects', ' [Collaboration Data Objects - [MAPI_E_NO_SUPPORT(80040102)]]', None, 0, -2147221246), None)
J'ai cherché différentes solutions, mais rien n'y fait.
Quelqu'un aurait-il une autre approche/solution?
Merci d'avance,
Gérald
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
import win32com.client
from win32com.gen_py import *
import win32com.gen_py
session = win32com.client.gencache.EnsureDispatch ("MAPI.Session")
session.Logon ("Default Outlook Profile")
messages = session.Inbox.Messages
message = messages.GetFirst ()
c = 0
while message:
print "-----------------------------------------------------------------"
c = c +1
print message.Subject
attachments = message.Attachments
for i in range(attachments.Count):
attachment = attachments.Item(i + 1) # indexes are 1 based
if attachment != None:
print "Attachment type: " + str(attachment.Type)
filename = 'c:\\temp\\' + attachment.Name
if attachment.Type == win32com.client.constants.ActMsgRecipient:
print "Message as Attachment " + attachment.Name
filename = "c:\\temp\\attachment_" + str(c) + "_" + str(i) + ".msg"
print "filename: " + filename
attachment.WriteToFile(filename)
else:
print "--- No attachment"
message = messages.GetNext () |