I have a list containing Folder Names at the Outlook level [‘fried chicken’; “boiled pasta”; “baked potatoes”], folders exist and are empty.
The elements are strings that are combinations of two words example “fried chicken”.I search the Inbox and if the
message.subjectmatches one of the elements in the list move that email to the folder.
Example: Email subject is “How fried is the chicken” or “I like my potatoes to be baked”. It is not string in string exactly so mymessage.Movecall doesn’t find anything relevant.
Below is the “code”.
alerts_folder = root_folder.Folders[folder_name_selected]
messages = alerts_folder.Items
z=messages.Count
message = messages.GetLast()
for message in list(messages):
name = str(message.subject).lower()
` #message = messages.GetPrevious()
for y in top5:
if all(x in name for x in y.split()):
#print(str(name))
#print("Email " + name + " goes into folder " + alerts_folder[y])
name_of_selected_folder = str(y)
final_destination = alerts_folder.Folders[name_of_selected_folder]
#print("Email " + name + " goes into folder " + name_of_selected_folder)
message.Move(final_destination)
#message.Move(name_of_selected_folder)
Advertisement
Answer
Try:
for message in messages:
name = str(message.subject)
message = messages.GetPrevious()
for y in list:
if any(x in name for x in y.split()):
print(str(name))
#print("Email " + name + " goes into folder " + alerts_folder[list])
message.Move(alerts_folder.Folders[list])
The code above firstly iterates over list and then splits every element in a list (as each element is a string of two words).