[EMAIL PROTECTED] writes: > Hello again, > Thanks for the advice! > Unfortunately I still cannot get it to send attachments. > It comes up with the following windows error.. > (I have a feeling it has something to do with the file count) > > >>> import simplemapi > >>> simplemapi.SendMail("[EMAIL PROTECTED]","The Subject","The > body","c:\ian\ian.txt") > nFileCount 14 > Traceback (most recent call last): > File "<interactive input>", line 1, in ? > File "simplemapi.py", line 111, in SendMail > raise WindowsError, "MAPI error %i" % rc > WindowsError: MAPI error 2 >
Two problems: 1) SendMail is looking for a list of attachment files. 2) SendMail wants the attachments to be in the current working directory; that is what the: attach = map( os.path.abspath, attach ) is about, right? Try this: import simplemapi import os os.chdir("c:\ian") simplemapi.SendMail("[EMAIL PROTECTED]", "The Subject", "The body", ["ian.txt"]) > > This is the updated script.. > > ---------------------------------- > import os > from ctypes import * > > FLAGS = c_ulong > LHANDLE = c_ulong > LPLHANDLE = POINTER(LHANDLE) > > > # Return codes > SUCCESS_SUCCESS = 0 > # Recipient class > MAPI_ORIG = 0 > MAPI_TO = 1 > > > NULL = c_void_p(None) > > > class MapiRecipDesc(Structure): > _fields_ = [('ulReserved', c_ulong), > ('ulRecipClass', c_ulong), > ('lpszName', c_char_p), > ('lpszAddress', c_char_p), > ('ulEIDSize', c_ulong), > ('lpEntryID', c_void_p), > ] > lpMapiRecipDesc = POINTER(MapiRecipDesc) > > > class MapiFileDesc(Structure): > _fields_ = [('ulReserved', c_ulong), > ('flFlags', c_ulong), > ('nPosition', c_ulong), > ('lpszPathName', c_char_p), > ('lpszFileName', c_char_p), > ('lpFileType', c_void_p), > ] > lpMapiFileDesc = POINTER(MapiFileDesc) > > > class MapiMessage(Structure): > _fields_ = [('ulReserved', c_ulong), > ('lpszSubject', c_char_p), > ('lpszNoteText', c_char_p), > ('lpszMessageType', c_char_p), > ('lpszDateReceived', c_char_p), > ('lpszConversationID', c_char_p), > ('flFlags', FLAGS), > ('lpOriginator', lpMapiRecipDesc), # ignored? > ('nRecipCount', c_ulong), > ('lpRecips', lpMapiRecipDesc), > ('nFileCount', c_ulong), > ('lpFiles', lpMapiFileDesc), > ] > lpMapiMessage = POINTER(MapiMessage) > > > MAPI = windll.mapi32 > > > MAPISendMail=MAPI.MAPISendMail > MAPISendMail.restype = c_ulong # Error code > MAPISendMail.argtypes = (LHANDLE, # lhSession > c_ulong, # ulUIParam > lpMapiMessage, # lpMessage > FLAGS, # lpFlags > c_ulong, # ulReserved > ) > > > def SendMail(recipient, subject, body, attach=[]): > """Post an e-mail message using Simple MAPI > > > recipient - string: address to send to > subject - string: subject header > body - string: message text > attach - string: files to attach > """ > attach = map( os.path.abspath, attach ) > nFileCount = len(attach) > if attach: > MapiFileDesc_A = MapiFileDesc * len(attach) > fda = MapiFileDesc_A() > for fd, fa in zip(fda, attach): > fd.ulReserved = 0 > fd.flFlags = 0 > fd.nPosition = -1 > fd.lpszPathName = fa > fd.lpszFileName = None > fd.lpFileType = None > lpFiles = fda > else: > # No attachments > lpFiles = cast(NULL, lpMapiFileDesc) # Make NULL > > print "nFileCount ",nFileCount > > > recip = MapiRecipDesc(0, MAPI_TO, None, recipient, 0, None) > #msg = MapiMessage(0, subject, body, None, None, None, 0, > # cast(NULL, lpMapiRecipDesc), 1, pointer(recip), > # nFileCount, cast(NULL, lpMapiFileDesc)) > msg = MapiMessage(0, subject, body, None, None, None, 0, > cast(NULL, lpMapiRecipDesc), 1, pointer(recip), > nFileCount, lpFiles) > > > rc = MAPISendMail(0, 0, byref(msg), 0, 0) > if rc != SUCCESS_SUCCESS: > raise WindowsError, "MAPI error %i" % rc > > -------------------------- > > Thanks again for your help so far on this. I really appreciate it! > Have a safe and very merry Christmas. > And the same to you. Lenard Lindstrom <[EMAIL PROTECTED]> -- http://mail.python.org/mailman/listinfo/python-list