Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   Re: Mapi Attachment method WriteToFile throws exception ... (http://www.velocityreviews.com/forums/t318803-re-mapi-attachment-method-writetofile-throws-exception.html)

Peter Curran 06-24-2003 05:02 PM

Re: Mapi Attachment method WriteToFile throws exception ...
 
Answering my own thread here in case someone else is interested. For
some reason CDO doesn't support what I was trying to do through MAPI,
or there's a bug or something, so I ended up using the Outlook object
model instead of the MAPI one.

To find the documentation of the object model, search for vbaol*.chm
on your disk - it'll probably show up under the office directory. In
case your file name is different, you might just search your office
dir for *.chm. The object model (javadoc-esque) makes this a million
times easier. The python code is just slightly different - here's the
(working) result.

"""
file - getvwstofile.py
opens a folder in an exchange inbox, iterates over its contents, saves
attachments on messages to disk
"""
from win32com.client.dynamic import Dispatch

s = Dispatch("Outlook.Application")
space = s.GetNameSpace("MAPI")
inbox = space.GetDefaultFolder(6)
vw = inbox.Folders[9] #open the folder i want

#now iterate over the messages
for x in range(1, len(vw.Items) + 1):
sub = vw.Items[x].Subject
sub = sub.encode('ascii', 'strict')
bContinue = 0
z = sub.find("Alert, ")
#if the subject the string i want in the subj, continue
if z != -1:
item = vw.Items[x]
attaches = item.Attachments
if attaches:
for i in range(1, len(attaches) + 1):
atitem = attaches[i]
if(atitem):
atitem.SaveAsFile("c:\\vwmsgs\\%d.html" % (x))
s = None






pcurran@intraspect.com (Peter Curran) wrote in message news:<bf49679f.0306231512.57ad4475@posting.google. com>...
> Hello -
>
> I'm getting an exception when I try to save an email attachment
> gathered from an Exchange server using Mapi and python com utils.
>
> The COM exception I'm getting back in indecipherable (to me) and I'm
> hoping that someone in this group can help me dereference the error so
> that I can move on. My code is included below - it's ugly but it
> works well other than where I try to save the attachment - maybe
> someone can use it.
>
> Is there a place where I can look up CDO exceptions? Has anyone else
> resolved this problem?
>
> The exception:
>
> File "<COMObject <unknown>>", line 2, in WriteToFile
> File "C:\Python22\Lib\site-packages\win32com\client\dynamic.py",
> line 237, in _ApplyTypes_
> result = apply(self._oleobj_.InvokeTypes, (dispid, LCID, wFlags,
> retType, argTypes) + args)
> com_error: (-2147352567, 'Exception occurred.', (17389, 'Collaboration
> Data Objects', ' [Collaboration Data Objects - [E_FAIL(80004005)]]',
> None, 0, -2147467259), None)
>
>
> The code:
>
> """
> file - getvwstofile.py
> opens a folder in an exchange inbox, iterates over its contents, saves
> attachments on messages to disk
> """
> import sys
>
> s = Dispatch("Mapi.Session")
> s.Logon()
> vw = s.Inbox.Folders[9] #open the folder i want
>
> #now iterate over the messages
> for x in range(1, len(vw.Messages) + 1):
> sub = vw.Messages[x].Subject
>
> bContinue = 0
> z = sub.find("Alert, ")
> #i only want messages with particular subjects
> if z != -1:
> item = vw.Messages[x]
> attaches = item.Attachments
> if attaches:
> for i in range(1, len(attaches) + 1):
> atitem = attaches[i]
>
> #here's the weirdness - got the attachment, but can't
> save it!
> #i've also tried atitem.WriteToFile("c:\vsmsgs\%s" %
> (atitem.Name))
> if(atitem):
> atitem.WriteToFile("c:\\vsmsgs\\%s" %
> (atitem.Name))
> s.Logoff()
> s = None


Rudy Schockaert 06-24-2003 08:34 PM

Re: Mapi Attachment method WriteToFile throws exception ...
 
Peter Curran wrote:
> Answering my own thread here in case someone else is interested. For
> some reason CDO doesn't support what I was trying to do through MAPI,
> or there's a bug or something, so I ended up using the Outlook object
> model instead of the MAPI one.
>


Searching the MSDN database ( http://msdn.microsoft.com ) learns the
following:

The 80004005 error message indicates that your data cannot be accessed.
This error can be paraphrased as "I could not access your data for some
reason."

This could mean a lot of things (corrupt data in your mailbox for
example). What I suggest you to do is print out the subject and the
folder of the mail your accessing and then examine the mail with another
tool like OutlookSpy (try google) to find out what's wrong with it.

Rudy



All times are GMT. The time now is 05:12 PM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.


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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57