.emlx Dateien sind der Speicherort für Emails ab Mac OSX... ehm 10.5? Hier ein dirty-work-around zum automatischen Speichern von Anhängen in Apple Mail, da es direkt via AppleScript noch nicht möglich zu sein scheint siehe Update weiter unten (Automator zählt nicht ;-) ). Geht aber leider nur mit IMAP-Postfächern
Mail Attachments sichern
da es direkt via AppleScript noch nicht möglich zu sein scheintsiehe Update weiter unten (Automator zählt nicht ;-) ). Geht aber leider nur mit IMAP-Postfächern--© hubionmac.com 17.09.2009
--Stores attached pdfs (of an email received via IMAP) on your desktop
-- renames them by date received.... !!!MV overwrites existiting files!!!!
tell application "Mail"
set a to selection
end tell
repeat with s in a
tell application "Mail" to set current_date to date received of s
--convert applescript date to date string
set current_date to AppleScriptDateToString(current_date)
tell application "Mail"
--this works only on imap account, because there attachments are stored in a searate folder, not inline in .emlx-files
set attachments_path to do shell script "find ~/Library/Mail/ -name " & (id of s)
set current_attachments to do shell script "find " & quoted form of attachments_path & " -type f -iname \"*.pdf\" -exec mv {} ~/Desktop/" & current_date & ".pdf \\;"
end tell
get current_date
end repeat
on AppleScriptDateToString(a)
set b to current date
set monthnames to {}
repeat with i from 1 to 12
set month of b to i
set monthnames to monthnames & {(month of b) as text}
end repeat
set Y to (year of b)
set M to 0
repeat with t in monthnames
set M to M + 1
if t as text = (month of b) as text then
exit repeat
end if
end repeat
set M to Twodigits(M)
set D to Twodigits(day of b)
set hh to Twodigits(hours of b)
set mm to (minutes of b)
set ss to Twodigits(seconds of b)
--"2009-12-17 01:26:49"
--return Y & "-" & M & "-" & D & " " & hh & ":" & mm & ":" & ss as text
--"2009-12-17 01:28"
--return Y & "-" & M & "-" & D & " " & hh & ":" & mm as text
--"2009-12-17"
return Y & "-" & M & "-" & D as text
end AppleScriptDateToString
on Twodigits(a)
return (characters -2 through -1 of (("0" & a) as text)) as text
end Twodigits
UPDATE
Dieser Code ist deutlich besser, kommt mit bereits vergebenen Dateinamen klar und funktioniert auch mit jeder Art von Apple-Mail-Account =)(**
hubionmac.com 17.09.2009
save pdfs from seleceted email messages and save them in one folder
renames attachments by date received and from address like:
2009-12-09 from Steve Jobs <steve@apple.com>.pdf
2009-12-09 from Steve Jobs <steve@apple.com> 1.pdf
2009-12-09 from Steve Jobs <steve@apple.com> 2.pdf
**)
set theAttachmentPath to (path to desktop) as text
tell application "Mail"
set a to selection
end tell
repeat with s in a
tell application "Mail"
set current_date to date received of s
set CurrentSender to sender of s
end tell
set current_date to AppleScriptDateToString(current_date)
tell application "Mail" to set Attached to mail attachments of s
repeat with ThisAttach in Attached
tell application "Mail" to set FileName to name of ThisAttach
if FileName ends with ".pdf" then
set FileName to current_date & " from " & CurrentSender & ".pdf" as text
set FileName to checkname_with_pdf_suffix(FileName, theAttachmentPath, false)
tell application "Mail" to save ThisAttach in theAttachmentPath & (FileName)
end if
end repeat
end repeat
on AppleScriptDateToString(a)
set b to a
set monthnames to {}
repeat with i from 1 to 12
set month of b to i
set monthnames to monthnames & {(month of b) as text}
end repeat
set Y to (year of b)
set M to 0
repeat with t in monthnames
set M to M + 1
if t as text = (month of b) as text then
exit repeat
end if
end repeat
set M to Twodigits(M)
set D to Twodigits(day of b)
set hh to Twodigits(hours of b)
set mm to (minutes of b)
set ss to Twodigits(seconds of b)
--"2009-12-17 01:26:49"
--return Y & "-" & M & "-" & D & " " & hh & ":" & mm & ":" & ss as text
--"2009-12-17 01:28"
--return Y & "-" & M & "-" & D & " " & hh & ":" & mm as text
--"2009-12-17"
return Y & "-" & M & "-" & D as text
end AppleScriptDateToString
on Twodigits(a)
return (characters -2 through -1 of (("0" & a) as text)) as text
end Twodigits
on checkname_with_pdf_suffix(n, D, looped)
tell application "Finder"
set thefiles to name of every item of (D as alias)
end tell
if thefiles contains n then
if looped = false then
set n to ((characters 1 through -5 of n) & " 1" & (characters -4 through -1 of n)) as text
checkname_with_pdf_suffix(n, D, true)
else
set tmp to (last word of ((characters 1 through -5 of n) as text) as integer)
set tmpcount to (count of characters of (tmp as text)) + 5
set tmp to tmp + 1
set n to ((characters 1 through (-1 * tmpcount) of n) & tmp & (characters -4 through -1 of n)) as text
checkname_with_pdf_suffix(n, D, true)
end if
else
return n
end if
end checkname_with_pdf_suffix