Add support for adding a category to a message

This commit is contained in:
Stacy Brock
2023-11-28 12:06:32 -08:00
parent 104c97771f
commit c2c5b372c2
2 changed files with 36 additions and 11 deletions

View File

@@ -132,12 +132,20 @@ ALLOW = [
normalized = {}
folder_cache = {}
category_cache = {}
def filter_message(self, message):
# normalize message attributes
normalized_to = [x.address.lower() for x in message.to]
normalized_from = message.sender.address.lower()
# process message headers into a sane data structure
headers = []
for header in message.message_headers:
h = {}
h[header['name']] = header['value'].lower()
headers.append(h)
# filter unactionable IAR emails
automated_sources = [
'coresys@lists.oregonstate.edu',
@@ -284,6 +292,10 @@ def filter_message(self, message):
move_message(message, 'Junk Email')
return
# add category to internal messages sent to DLs
if '@oregonstate.edu' in normalized_from and not get_header('To', headers):
add_category(message, 'OSU Inform')
# keep messages from allowed emails and domains
for good in ALLOW:
if good in normalized_from and normalized_from not in BLOCK_EMAIL:
@@ -303,13 +315,6 @@ def filter_message(self, message):
move_message(message, 'Junk Email')
return
# process message headers into a sane data structure
headers = []
for header in message.message_headers:
h = {}
h[header['name']] = header['value'].lower()
headers.append(h)
# junk messages from blocked domains
is_spam = False
for domain in BLOCK_DOMAINS:
@@ -352,15 +357,25 @@ def is_in_message(list_, message):
break
return is_found
def move_message(message, folder):
if folder not in folder_cache:
def move_message(message, folder_name):
""" move a message to a folder stored in the folder cache """
if folder_name not in folder_cache:
return False
message.move(folder_cache[folder])
message.move(folder_cache[folder_name])
def add_category(message, category_name):
""" add an Outlook category to a message """
if category_name not in category_cache:
return False
message.add_category(category_cache[category_name])
message.save_message()
def init_filters(self):
# hack to copy a dict from parent object into local object
for k,v in self._folders.items():
folder_cache[k] = v
for k,v in self._categories.items():
category_cache[k] = v
# normalize filter keyword lists
normalized['BLOCK_KEYWORDS'] = [x.lower() for x in BLOCK_KEYWORDS]