Search code examples
pythonoutlook-api

Reading Emails From Outlook with Python & Specifying a Date Range


I am trying to read emails from Outlook using a specific date range as well as other criteria - sender, subject etc. However, I am unsure as to how to specify a date range within which Python can search for the emails. This is what I have so far which generates the type error below:

if subject in message.subject and date in message.senton.date():
TypeError: argument of type 'datetime.date' is not iterable
import win32com.client
import datetime


outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox = outlook.GetDefaultFolder(18).Folders.Item("xxxxx")
messages = inbox.Items
date = datetime.date.today()


subject = "xxxxxxx"

for message in messages:
    if subject in message.subject and date in message.senton.date():
     print(message.senton.time())

I would like to search for emails within a specific date range, as well as be able to use more than one criteria to search. E.g specify the subject as well as sender etc. But I am not sure how, I am new to Python so please help!


Solution

  • Try this

    if subject in message.subject and date == message.senton.date():
         print(message.senton.time())
         print(message.sender)
    

    Edit: if you want date range you can use datetime to define the date range

    start = message.senton.date() - timedelta(days=10)
    end = message.senton.date() + datetime.timedelta(days=10) # 20 days date range
    if subject in message.subject and date > start and date < end:
         print(message.senton.time())
         print(message.sender)