Mailsmith - Label By Score

Summary: Labels spam messages according to their spamminess.
Requires: SpamSieve, Mailsmith
Install Location: Mailsmith Support/Action Scripts/

Description

You can use this script instead of Mailsmith’s built-in support for SpamSieve, if you want additional flexibility. First, uncheck Use SpamSieve in the Spam Handling preferences. Then create a filter that runs this script on every message. Very spammy messages will be colored tan (custom label 20), less spammy ones will be colored brown (custom label 19), and good messages will be left unlabeled.

Download in Compiled Format | Download in Text Format

Script

property possibleSpamLabelIndex : 26
property
spamLabelIndex : 27
property
threshold : 90

on
run
    set
theList to getList()
    if
theList is not {} then
        my
doAction(theList)
    else
        display dialog "No messages were selected" buttons "OK"
    end if
end
run

on
filtermessage(m)
    my
doAction({m})
end
filtermessage

on
doAction(mList)
    tell
application "Mailsmith"
        repeat with
m in mList
            try
                set
s to m's RFC822 message
                tell
application "SpamSieve"
                    set
theScore to score message s
                end tell
                if
theScore ≥ 50 then
                    set
m's is_spam to true
                    set
m's is_not_spam to false
                    if
theScore > threshold then
                        set label index of
m to spamLabelIndex
                    else
                        set label index of
m to possibleSpamLabelIndex
                    end if
                else
                    set
m's is_not_spam to true
                    set
m's is_spam to false
                end if
            end try
        end repeat
    end tell
end
doAction

on
getList()
    tell
application "Mailsmith"
        set
retry to false
        try
            set
mList to get selection as list
            set
m to item 1 of mList
            if
class of m is not message then set retry to true
        on error
            set
retry to true
        end try
        if
retry then
            set
retry to false
            try
                set
mList to message of window 1 as list
            on error
                set
retry to true
            end try
        end if
        if
retry then set mList to {}
    end tell
    return
mList
end
getList

Last Modified: 2007-08-17