Outlook - Remote Training
Summary: Training script for setting up a spam filtering drone with Outlook.
Requires: SpamSieve, Outlook
Install Location: ~/Library/Application Support/Microsoft/Office/Outlook Script Menu Items/
Description
Please see the Setting Up a Spam Filtering Drone section of the manual. You’ll need to enter the names of the IMAP and Exchange accounts that you want the drone to operate on.
Download in Compiled Format · Download in Text Format
Script
-- Enter your account names here. If you have more than one, separate with commas: {"Account 1", "Account 2"}
-- The account name comes from the "Account description" field in the Accounts pane of Outlook's preferences.
set _imapAccountNames to {"Account 1"}
set _exchangeAccountNames to {}
tell application "Microsoft Outlook"
repeat with _accountName in _imapAccountNames
set _account to imap account _accountName
my trainMessagesInAccount(_account)
end repeat
repeat with _accountName in _exchangeAccountNames
set _account to exchange account _accountName
my trainMessagesInAccount(_account)
end repeat
end tell
on trainMessagesInAccount(_account)
tell application "Microsoft Outlook"
set _folder to folder "TrainGood" of _account
set _messages to incoming messages of _folder
repeat with _message in _messages
set _source to _message's source
tell application "SpamSieve" to add good message _source
my removeJunkCategories(_message)
move _message to inbox of _account
end repeat
set _folder to folder "TrainSpam" of _account
set _messages to incoming messages of _folder
repeat with _message in _messages
set _source to _message's source
tell application "SpamSieve" to add spam message _source
my applyCategoryNamed(_message, "Junk")
move _message to junk mail of _account
end repeat
end tell
end trainMessagesInAccount
on categoryForName(_categoryName)
tell application "Microsoft Outlook"
try
return category _categoryName
on error
try
-- Getting by name doesn't always work.
repeat with _category in categories
if _category's name is _categoryName then return _category
end repeat
end try
make new category with properties {name:_categoryName}
end try
return category _categoryName
end tell
end categoryForName
on applyCategoryNamed(_message, _categoryName)
tell application "Microsoft Outlook"
set _categoryToApply to my categoryForName(_categoryName)
set _categories to _message's category
repeat with _category in _categories
if _category's id is equal to _categoryToApply's id then return
end repeat
set category of _message to {_categoryToApply} & category of _message
end tell
end applyCategoryNamed
on removeJunkCategories(_message)
tell application "Microsoft Outlook"
try
set _categories to _message's category
set _newCategories to {}
repeat with _category in _categories
if _category's name is not in {"Junk", "Uncertain Junk"} then
copy _category to end of _newCategories
end if
end repeat
set _message's category to _newCategories
end try
end tell
end removeJunkCategoriesLast Modified: 2012-06-25