Created
February 25, 2014 13:23
-
-
Save sentient06/9208633 to your computer and use it in GitHub Desktop.
iCloud Junk Mail Redirection
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on run {input, parameters} | |
set spamAccount to "[email protected]" | |
set tempFolderName to "JunkMail" | |
set tempFolderPath to path to home folder | |
set maxSendAttempts to 5 | |
set maxSentDeleteAttempts to 10 | |
set deleteSentMessage to false | |
set deleteJunkMessage to false | |
-- Test behaviour by observing the home directory and the drafts box in Mail | |
set testingBehaviour to true | |
-- From here onward should not need to be modified | |
set tempFolder to (tempFolderPath as string) & tempFolderName | |
-- Creates temporary folder for junk | |
tell application "Finder" | |
if not (exists folder tempFolder) then | |
make new folder at tempFolderPath with properties {name:tempFolderName} | |
end if | |
end tell | |
tell application "Mail" | |
set junkMessages to every message of junk mailbox | |
set messageCount to (count of junkMessages) as number | |
if (messageCount is greater than 0) then | |
-- Sets uniqueID to "spam report " & (round (random number from 10000 to 99999) rounding down as string) | |
set messageSubject to "spam report - delete now" | |
set newMessage to make new outgoing message with properties {subject:messageSubject, content:" "} | |
tell newMessage | |
make new to recipient at end of to recipients with properties {address:spamAccount} | |
end tell | |
set counter to 1 | |
repeat with junkMessage in junkMessages | |
-- Marks as Junk for Mail | |
set junk mail status of junkMessage to true | |
set sourceFile to (tempFolder & ":ml" & counter & ".eml") | |
set thisSource to the source of junkMessage as string | |
set f to open for access sourceFile with write permission | |
set eof of f to 0 | |
write thisSource to f | |
close access f | |
tell "Finder" | |
set theAttachment to sourceFile as alias | |
end tell | |
tell the newMessage | |
tell content | |
make new attachment with properties {file name:theAttachment} at before the first character | |
end tell | |
end tell | |
set counter to counter + 1 | |
end repeat | |
set should play other mail sounds to false | |
if testingBehaviour is false then | |
-- Tries to send the message up to 5 times | |
set attemptCount to 0 | |
repeat until attemptCount is maxSendAttempts | |
set sendResult to send newMessage | |
if (sendResult) then | |
exit repeat | |
else | |
set attemptCount to attemptCount + 1 | |
end if | |
end repeat | |
if attemptCount is greater than or equal to maxSendAttempts then | |
display alert "Unable to send message." as critical | |
return | |
end if | |
display alert "Spam redirected" message messageCount & " messages were redirected to Apple!" as informational | |
end if | |
-- Pauses for one second to wait for the sent message to show up | |
delay 1 | |
-- Deletes sent message | |
if deleteSentMessage is true then | |
-- Tries to delete the message over 5 seconds, at one second intervals | |
set tryToDelete to 0 | |
repeat while tryToDelete is less than maxSentDeleteAttempts | |
set sentMessages to every message in sent mailbox where subject is messageSubject | |
if (count of sentMessages) is greater than 0 then | |
repeat with sentMessage in sentMessages | |
set deleted status of sentMessage to true | |
end repeat | |
-- stop checking | |
exit repeat | |
else | |
-- increment deletion counter | |
set tryToDelete to tryToDelete + 1 | |
-- Pause for one second | |
delay 1 | |
end if | |
end repeat | |
if tryToDelete is greater than or equal to maxSentDeleteAttempts then | |
display alert "Unable to delete sent message." as warning | |
end if | |
end if | |
-- Deletes junk messages | |
if deleteJunkMessage is true then | |
repeat with junkMessage in junkMessages | |
set deleted status of junkMessage to true | |
end repeat | |
end if | |
end if | |
-- Turns sounds back on | |
set should play other mail sounds to true | |
end tell | |
-- Deletes temporary folder | |
set posixJunkFolder to POSIX path of (tempFolder) | |
set deleteCommand to "rm -Rf " & quoted form of posixJunkFolder | |
do shell script (deleteCommand) | |
end run |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is a small Apple Script to redirect all current junk mail to Apple. Partially tested on Mavericks, Mail v. 7.1.
Clean-paste code into new workflow (run applescript action) to have it working.