PythonWin Outlook connection

michael montagne montagne at boora.com
Mon May 14 12:35:59 EDT 2001


Thanks Mark but no luck.  I also have no problems on my win98 machine at
home.  It's only where it has to be that doesn't work.  Here is my code:
Can you see anything else:

import win32com, sys, string, win32api, urllib
import win32com.client.dynamic
import RFIData


class myURLOpener(urllib.FancyURLopener):

    def setpasswd(self, user, passwd):
        self.__user = user
        self.__passwd = passwd

    def prompt_user_passwd(self, host, realm):
        return self.__user, self.__passwd

def CalcIsOpen(str):
      import re
      regexp=re.compile(r"( RFI#.* NEW )")
      a=str
      if regexp.search(a):
         return "true"
      else:
         return "false"

def main():
   ##try:
        import win32com.client
        import traceback
        import time
        import re

#gencache.EnsureModule('{00062FFF-0000-0000-C000-000000000046}',0,9,0)
        #strPrefix="h:\\proj\\test\\rfi\\"
        strPrefix="h:\\proj\\98011\\rfi\\"
        #objOut=EnsureDispatch("Outlook.Application.9")
        objOut = win32com.client.Dispatch("Outlook.Application.9")
        objNamespace=objOut.GetNamespace("Mapi")
        objNamespace.Logon()
        folder=objNamespace.Folders.Item("Public Folders").Folders.Item("All
Public folders").Folders.Item("Proj").Folders.Item("98011 UC
Davis").Folders.Item("UCD RFI's")
        oldfolder=objNamespace.Folders.Item("Public
Folders").Folders.Item("All Public
folders").Folders.Item("Proj").Folders.Item("98011 UC
Davis").Folders.Item("zRFIArchive")
        cnt=folder.Items.Count
        files=[]
        emails=[]
        daoEngine=win32com.client.Dispatch("DAO.DBEngine.36")
        db=daoEngine.OpenDatabase('H:\\proj\\98011\\data\\UCDRFI.mdb')
        i=1
        print str(cnt) + " emails found to process"
        while i <= cnt:

            try:
                objemail=folder.Items(i)
                strbody=objemail.body
                strsubject=objemail.subject
                isopen=CalcIsOpen(strsubject)
                try:
                    print str(cnt-i) + " ---- " + strsubject
                except:
                    tb= sys.exc_info()[2]
                    print traceback.extract_tb(tb)[0]
                    print str(cnt-i) + " ---- "
                ii=string.find(strbody,"http:")
                if ii != -1:
                    strurl=strbody[ii:]
                    istart=string.find(strurl,"UNID")
                    iend=string.find(strurl,"?Opendocument")
                    strFileName=strurl[istart+5:iend]
                    urlopener = myURLOpener()
                    urlopener.setpasswd("consultant", "ae")
                    strOutFile=strPrefix + strFileName + ".html"
                    fp=urlopener.retrieve(strurl,strOutFile)
                    urlopener.cleanup
                    ##UpdateDatabase

                    a=RFIData.RFIData(strOutFile)
                    rs=db.OpenRecordset('SELECT * FROM tblRFI WHERE RFI=' +
a.RFI)

                    if rs.EOF:

                        rs.AddNew()
                        rs.Fields('Title').Value=a.Title
                        rs.Fields('RFI').Value=a.RFI
                        rs.Fields('Specification').Value=a.Specification
                        rs.Fields('Drawing').Value=a.Drawing
                        rs.Fields('Reference').Value=a.Reference
                        rs.Fields('InitiatedBy').Value=a.InitiatedBy
                        try:
                            rs.Fields('RespondBy').Value=a.RespondBy
                        except:
                            tb= sys.exc_info()[2]
                            print traceback.extract_tb(tb)[0]
                            print a.RespondBy + " is not a valid date"
                        rs.Fields('Subject').Value=a.Subject
                        rs.Fields('Filename').Value=a.FileName
                        try:
                            rs.Fields('Sent').Value=a.Sent
                        except:
                            tb= sys.exc_info()[2]
                            print traceback.extract_tb(tb)[0]
                            rs.Fields('Sent').Value=a.RespondBy
                        rs.Fields('Question').Value=a.Question
                        rs.Fields('Response').Value=a.Response
                        rs.Fields('IsOpen').Value=isopen
                        rs.Update()
                    else:

                        rs.Edit()
                        rs.Fields('Title').Value=a.Title
                        rs.Fields('RFI').Value=a.RFI
                        rs.Fields('Specification').Value=a.Specification
                        rs.Fields('Drawing').Value=a.Drawing
                        rs.Fields('Reference').Value=a.Reference
                        rs.Fields('InitiatedBy').Value=a.InitiatedBy
                        try:
                            rs.Fields('RespondBy').Value=a.RespondBy
                        except:
                            tb= sys.exc_info()[2]
                            print traceback.extract_tb(tb)[0]
                            print a.RespondBy + " is not a valid date"
                        rs.Fields('Subject').Value=a.Subject
                        rs.Fields('Filename').Value=a.FileName
                        try:
                            rs.Fields('Sent').Value=a.Sent
                        except:
                            tb= sys.exc_info()[2]
                            print traceback.extract_tb(tb)[0]
                            rs.Fields('Sent').Value=a.RespondBy
                        rs.Fields('Question').Value=a.Question
                        rs.Fields('Response').Value=a.Response

rs.Fields('Created').Value=time.strftime("%m/%d/%Y",time.localtime())
                        rs.Fields('IsOpen').Value=isopen
                        rs.Update()

                    emails.append(objemail)
                else:
                    print "No URL found:"
            except:
                i= i+1
                print "Skipping "
                tb= sys.exc_info()[2]
                print traceback.extract_tb(tb)[0]
                continue
            i= i+1

##    except:
##        ##Cleanup
##        import sys
##        print "Error-Aborting"
##        print sys.exc_info()
##        rs.Close()
##        db.Close()
##        objNamespace.Logoff()
##        raw_input("Hit return to exit")

        ##Cleanup
        try:
            rs.Close()
        except UnboundLocalError:
            print "Recordset Never Opened. "
        try:
            db.Close()
        except UnboundLocalError:
            print "Databse never Opened"
        ##Delete emails that were processed correctly
        if len(emails)>0:
            print "Moving processed emails"
        for e in emails:
            try:
                print e
            except:
                tb= sys.exc_info()[2]
                print traceback.extract_tb(tb)[0]
                print " ---- "
            try:
                etest=oldfolder.Items(e.subject)
                etest.delete()
                e.move(oldfolder)
            except:
                e.move(oldfolder)

        objNamespace.Logoff()
        raw_input("Hit return to exit")

if __name__=='__main__':
    main()
else:
    print "RFI loaded as module. Run Main() to begin"









More information about the Python-list mailing list