File: outlook.py

package info (click to toggle)
pythoncard 0.8.2-2
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 8,452 kB
  • sloc: python: 56,787; makefile: 56; sh: 22
file content (70 lines) | stat: -rw-r--r-- 2,807 bytes parent folder | download | duplicates (3)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/python
"""
I need a more generic way of dealing with these modules that may not be available.
Also, if the MSOutlook __init__ can't be completed, what's an appropriate failure
mechanism?
"""
__version__ = "$Revision: 1.6 $"
__date__ = "$Date: 2005/12/13 11:13:21 $"

try:
    import win32com.server.util
    import win32com.client
    import pythoncom
    import pywintypes
    import winerror
    
    WIN32_FOUND = 1
except ImportError:
    WIN32_FOUND = 0

import traceback
import sys

class MSOutlook:
    def __init__(self):
        self.outlookFound = 0
        if WIN32_FOUND:
            #oOutlookApp = win32com.client.Dispatch("Outlook.Application.9")
            #self.oOutlookApp = win32com.client.Dispatch("Outlook.Application")
            # use gencache.EnsureDispatch to make sure makepy is run if necessary
            # this dramatically speeds up usage of the COM object
            self.oOutlookApp = win32com.client.gencache.EnsureDispatch("Outlook.Application")
            self.outlookFound = 1
        else:
            #print "unable to load Outlook"
            pass
        self.olFolderInbox = 6
        self.olContactItem = 2
        self.olFolderContacts = 10
        self.olContact = 40
        self.olFolderDisplayNormal = 0
        self.olMinimized = 1
        self.olNormalWindow = 2
        self.records = []        

    def loadRecords(self):
        if not self.outlookFound:
            return
        # this should use more try/except blocks or nested blocks
        onMAPI = self.oOutlookApp.GetNamespace("MAPI")
        ofContacts = onMAPI.GetDefaultFolder(self.olFolderContacts)
        #print "number of contacts:", len(ofContacts.Items)
        for oc in range(len(ofContacts.Items)):
            contact = ofContacts.Items.Item(oc + 1)
            if contact.Class == self.olContact:
                record = {}
                record['FullName'] = contact.FullName
                record['CompanyName'] = contact.CompanyName
                record['MailingAddressStreet'] = contact.MailingAddressStreet
                record['MailingAddressCity'] = contact.MailingAddressCity
                record['MailingAddressState'] = contact.MailingAddressState
                record['MailingAddressPostalCode'] = contact.MailingAddressPostalCode
                record['HomeTelephoneNumber'] = contact.HomeTelephoneNumber
                record['BusinessTelephoneNumber'] = contact.BusinessTelephoneNumber
                record['MobileTelephoneNumber'] = contact.MobileTelephoneNumber
                record['Email1Address'] = contact.Email1Address
                record['Body'] = contact.Body
                self.records.append(record)
        #print "InterfaceCount/GatewayCount %d/%d" % (pythoncom._GetInterfaceCount(), pythoncom._GetGatewayCount())