(*
PURPOSE:
Check individual Apple Mail accounts at different intervals that you determine.
INSTRUCTIONS:
Set Mail's preferences to "Check for new mail: Manually".
Save this script as an Application Bundle and select the Stay Open option.
*)
global theMinimumInterval, theAccountList, theMinuteCount, ScriptName
set scriptPath to path to me
-- Get full name of this script.
tell application "Finder"
set scriptNameFull to name of scriptPath
set theExt to name extension of scriptPath
end tell
-- Get the name of this script, minus the extension
if theExt is not "" then
set ScriptName to (text items 1 thru -(2 + (length of theExt)) of scriptNameFull) as string
end if
-- Hide this script's icon in the Dock
tell application "System Events"
tell process ScriptName
keystroke "h" using command down
end tell
end tell
tell application "Mail"
activate
check for new mail
set theMinimumInterval to 0
set theAccountList to ¬
{¬
{account "work" of application "Mail", 15}, ¬
{account "personal" of application "Mail", 40}, ¬
{account "lists" of application "Mail", 90} ¬
-- Add as many Mail accounts as you have.
}
set theCount to 0
repeat with eachAccount in theAccountList
set theInterval to item 2 of eachAccount
if theInterval ≠ 0 then
set theCount to theCount + 1
if (theCount > 1) then
set theMinimumInterval to my gcd(theInterval, theMinimumInterval)
else
set theMinimumInterval to (theInterval as integer)
end if
end if
end repeat
if theMinimumInterval = 0 then
display dialog "No accounts will be checked (at least one value needs to be greater than 0)."
return
end if
end tell
set theMinuteCount to 0
on idle
set theMinuteCount to theMinuteCount + theMinimumInterval
repeat with eachAccount in theAccountList
set theAccount to item 1 of eachAccount
set theInterval to item 2 of eachAccount
if theInterval ≠ 0 then
set theMod to theMinuteCount mod theInterval
if (theMod = 0) then
tell application "Mail" to check for new mail for theAccount
end if
end if
end repeat
return (theMinimumInterval * 60)
end idle
on gcd(a, b)
repeat until b = 0
set x to b
set b to a mod b
set a to x
end repeat
return a
end gcd
on quit
continue quit
end quit