is it possible to trigger some action when a new mail arrives in outlook using the python module win32com
pseudocode
while 1
if a mail arrives
do x
Edit: I'm not allowed to use "run script" rule
is it possible to trigger some action when a new mail arrives in outlook using the python module win32com
pseudocode
while 1
if a mail arrives
do x
Edit: I'm not allowed to use "run script" rule
Use DispatchWithEvents
function for Outlook NewMailEx event
Example
import pythoncom
from win32com.client import DispatchWithEvents
# Event handler class for Outlook events
class OutlookEventHandler(object):
@staticmethod
def OnNewMailEx(EntryIDCollection):
for ID in EntryIDCollection.split(","):
item = Outlook.Session.GetItemFromID(ID)
# check item class, 43 = MailItem
if item.Class == 43:
print(" Subj: " + item.Subject)
if __name__ == "__main__":
Outlook = DispatchWithEvents("Outlook.Application", OutlookEventHandler)
olNs = Outlook.GetNamespace("MAPI")
Inbox = olNs.GetDefaultFolder(6)
pythoncom.PumpMessages()
Example
import pythoncom
from win32com.client import DispatchWithEvents, Dispatch
# Event handler class for outlook events
class OutlookEvent(object):
@staticmethod
def OnItemAdd(item):
""" Name Required/Optional Data type Description
Item Required Object The item that was added."""
print(f'The item that was added = {item.Subject}')
if __name__ == "__main__":
outlook = Dispatch("outlook.Application")
olNs = outlook.GetNamespace("MAPI")
inbox = olNs.GetDefaultFolder(6)
event = DispatchWithEvents(inbox.Items, OutlookEvent)
pythoncom.PumpMessages()
You can create a rule that runs a VBA script. That script can do anything you want it to do, including running your Python code.