I used this script to automatically save attachments of some incoming messages in apple mail. Sine Monterey, this doesn't work anymore. Syntax check gives no errors, but in my mail rules the script doesn't run at all.
I did a lot of research to find a solution, with no success. Any help is appreciated.
Marcus
This is the code …
using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
-- set up the attachment folder path
tell application "Finder"
set folderName to "WebApp-Beiträge Mail"
set attachmentsFolder to ("Volumes:Daten HD:Workspace:Universität_Saarland:projekte_Universität_Saarland:2070_uni_2101_WebDev_WebApp:struktur_text_navigation_2070:Beiträge:" & folderName) as text
end tell
tell application "Mail"
repeat with eachMessage in theMessages
--set the sub folder for the attachments to the senders mail address.
-- All future attachments from this sender will the be put here.
set subFolder to (extract address from reply to of eachMessage)
-- set up the folder name for this mail message's attachments. We use the time stamp of the date received time stamp
set {year:y, month:m, day:d, hours:h, minutes:min} to eachMessage's date received
--set timeStamp to (y & "-" & my pad(d) & "-" & my pad(m as integer) & "_" & my pad(h) & "-" & my pad(min)) as string -- month as number
set timeStamp to (y & "-" & my pad(m as integer) & "-" & my pad(d) & "_" & my pad(h) & "-" & my pad(min)) as string -- month as number yyy-mm-dd
--set timeStamp to (y & "_" & my pad(d) & "-" & m & "_" & my pad(h) & "-" & my pad(min)) as string
set attachCount to count of (mail attachments of eachMessage)
if attachCount is not equal to 0 then
-- use the unix /bin/test command to test if the timeStamp folder exists. if not then create it and any intermediate directories as required
if (do shell script "/bin/test -e " & quoted form of ((POSIX path of attachmentsFolder) & "/" & subFolder & "/" & timeStamp) & " ; echo $?") is "1" then
-- 1 is false
do shell script "/bin/mkdir -p " & quoted form of ((POSIX path of attachmentsFolder) & "/" & subFolder & "/" & timeStamp)
end if
try
-- Save the attachment
repeat with theAttachment in eachMessage's mail attachments
set originalName to name of theAttachment
set savePath to attachmentsFolder & ":" & subFolder & ":" & timeStamp & ":" & originalName
try
save theAttachment in file (savePath)
end try
end repeat
--on error msg
--display dialog msg
end try
end if
end repeat
end tell
end perform mail action with messages
end using terms from
on pad(n)
return text -2 thru -1 of ("0" & n)
end pad