Add support for adding a category to a message
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user