from win32com.client import Dispatch
from win32com import universal
IExStoreSyncEvents_methods = ["OnSyncSave"]
universal.RegisterInterfaces('{GUID for EXOLEDB MakePy file}',0,1,0, ["IExStoreSyncEvents"]) #GUID in file name
class MyEventListener:
_public_methods_ = IExStoreSyncEvents_methods
_com_interfaces_ = ['IExStoreSyncEvents'] #interface to implement
_reg_clsid_ = "{D7CDBFB7-7B49-4EA4-9F8E-47152ED86991}" #CLSID unique
_reg_progid_ = "MyEventListener"
_reg_desc_ = "My Event Listener"
# IExStoreSyncEvents interfaces
def OnSyncSave(self, pEventInfo, strUrl, lFlags): #pEventInfo,strUrl,IFlags <- check SDK
# Called by a store when an item is saved.
self.sendMessage('[EMAIL PROTECTED]','[EMAIL PROTECTED]', 'tester','OnSyncSave') #tests that sync works properly
return
def OnSyncDelete(self, pEventInfo, strUrl, lFlags):
# Called by a store when an item is deleted.
pass
def sendMessage(self, To, From, Subject, Text): #sends email
Msg = Dispatch("CDO.Message")
Msg.To = To
Msg.From = From
Msg.Subject = Subject
Msg.TextBody = Text
#' Send the message.
Msg.Send()
return
if __name__=='__main__':
try:
# import event sink type library
import win32com.server.register
win32com.server.register.UseCommandLine(MyEventListener)
except:
raise RuntimeError, "could not import event sink type library"
Step 3) Make a COM+ object
Programs->Administrative tools->Component Services
under Component Services tab, select: computers->My Computer->Com+ Applications
right click Com+ Applications
Select New->Application
click next->Create An Empty Application
Name application same as class
Select Server Application
Click next
Define the scope for the com+ class, most likely you'll want it for a single user and want it to run regardless if someone is logged on so: Select: this user->browse, type name and Check names, click OK
fill in password, click next
click next, next, and finish
expand Com+ Applications tree, expand your new com+ object tree
right click Components->new->Component
next->Import Component->select your Com class->finish
select Com+ Application, Right click, select properties, find Security tab,
turn off Enforce Access Checks for this application
select Perform access checks only at process level. Select Okay
Step 4) Open Command Prompt
find regevent.vbs, should be in C:\Program Files\Exchange SDK\SDK\Support\OLEDB\Scripts
C:\Program Files\Exchange SDK\SDK\Support\OLEDB\Scripts>cscript RegEvent.vbs add onsyncsave MyEventListener file://./backofficestorage/Domain/mbx/user/inbox/evtreg1
Now send some mail to whichever inbox you set up the event at, give it a few minutes, and enjoy that you didn't have to read the MSDN Exchange SDK yet! Alas, the code isn't perfect and you'll receive two emails instead of one, thats what the IFlags are for in the OnSyncSave function, check out the VB or C++ code given in the SDK and you should have that whipped pretty fast.
Johann
_______________________________________________ Python-win32 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-win32
