Every Monday I receive the attachments with the slightly changed subject title. Constant part of the subject title is PB Report and will have the Monday's date. For example I received email this Monday with subject PB Report - 13.12.2021, last week PB Report - 06.12.2021 and so on. I would like to implement the GetLast in this code in order to get only the newest sent report. Also, how do I tell python to search the subject which starts with PB Report and dont look at the rest of the title. I tried wildcard(*) as save_attachments('PB Report*') but did not work.
import datetime
import os
import win32com.client
path = r"C:/Users/greencolor/Desktop/Autoreport/"
today = datetime.date.today()
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
def save_attachments(subject):
for message in messages:
if message.Subject == subject:
for attachment in message.Attachments:
print(attachment.FileName)
attachment.SaveAsFile(os.path.join(path, str(attachment)))
if __name__ == "__main__":
save_attachments('PB Report - 13.12.2021')
I also have the alternative code but when i run this code i never get the result nor error. It takes.
import os
import win32com.client
path = r"C:/Users/greencolor/Desktop/Autoreport/"
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
message = messages.GetLast()
while message:
if 'PB' in message.subject and 'Report' in message.subject:
for attachment in message.Attachments:
print(attachment.FileName)
attachment.SaveAsFile(os.path.join(path, str(attachment)))