Mailanhänge automatisch sichern

So, nach längerer Recherche bin ich auf folgendes Skript gestoßen:

Code:
use AppleScript version "2.4"
use scripting additions

using terms from application "Mail"
    on perform mail action with messages messageList in mailboxes mbox for rule aRule
        
        set savePath to ("Destination") as string
        
        tell application "Mail"
            set selectedMessages to the selection
            repeat with aMessage in selectedMessages
                repeat with anAttachment in mail attachments of aMessage
                    set attachmentName to name of anAttachment
                    save anAttachment in file (savePath & attachmentName)
                    
                end repeat
            end repeat
        end tell
        
    end perform mail action with messages
end using terms from


Entsprechend angepasst, sollte es eigentlich laufen. Es ist an der richtigen Lokation abgelegt (im Ordner /Users/Benutzername/Library/Application Scripts/com.apple.mail

Wenn ich die Regel einrichte, in der das Skript angesprochen wird und die erste Anwendung der Regel bestätige, legt mir Mail den Anhang der letzten E-Mail von dem betreffenden E-Mail Absender in den Downloads Ordner. Bei neu eingehenden Mails klappt es dann leider nicht mehr.

Hat jemand eine Idee woran es liegt?
 
Nach ein wenig weiterer Recherche hat sich mir dann folgendes Skript aufgetan:

Code:
using terms from application "Mail"
    on perform mail action with messages theMessages for rule theRule
      
        -- Lege hier den Zielordner fest
        set destFolder to "macOS:Users:usw.usw:"

        tell application "Mail"
          
            repeat with oneMessage in theMessages
                set x to 1

                set theSubject to subject of oneMessage
                tell me
                    set theSubject to do shell script "echo " & theSubject & " | sed 's/:/–/g'"
                end tell
              
                repeat with oneAttachment in mail attachments of oneMessage
                    tell me
                        set _exists to true
                        repeat until _exists is false
                            try
                                alias (destFolder & theSubject & "_" & x & ".pdf")
                                set x to x + 1
                            on error
                                set _exists to false
                            end try
                        end repeat
                    end tell
                  
                    set theName to theSubject & "_" & x & ".pdf"
                    save oneAttachment in file (destFolder & theName)

                end repeat
            end repeat     
        end tell
      
    end perform mail action with messages
end using terms from

Das klappt einwandfrei und benennt sogar die Datei im Downloads Ordner nach dem Namen der E-mail
 
... unter welchem Namen mit welcher Extension empfiehlt es sich, dass in dem Ordner zu speichern?
 
Nach ein wenig weiterer Recherche hat sich mir dann folgendes Skript aufgetan:

Code:
using terms from application "Mail"
    on perform mail action with messages theMessages for rule theRule
      
        -- Lege hier den Zielordner fest
        set destFolder to "macOS:Users:usw.usw:"

        tell application "Mail"
          
            repeat with oneMessage in theMessages
                set x to 1

                set theSubject to subject of oneMessage
                tell me
                    set theSubject to do shell script "echo " & theSubject & " | sed 's/:/–/g'"
                end tell
              
                repeat with oneAttachment in mail attachments of oneMessage
                    tell me
                        set _exists to true
                        repeat until _exists is false
                            try
                                alias (destFolder & theSubject & "_" & x & ".pdf")
                                set x to x + 1
                            on error
                                set _exists to false
                            end try
                        end repeat
                    end tell
                  
                    set theName to theSubject & "_" & x & ".pdf"
                    save oneAttachment in file (destFolder & theName)

                end repeat
            end repeat     
        end tell
      
    end perform mail action with messages
end using terms from

Das klappt einwandfrei und benennt sogar die Datei im Downloads Ordner nach dem Namen der E-mail


Super! Script funktioniert, allerdings speichert das "alles" ab, vom Icon in der Signatur und sonst auch alles. Hätte aber sehr gerne, dass es nur PDF Dateien, Doc, XLS, numbers, pages usw. abspeichert.
Das wäre DIE top Lösung!
Kann da jemand helfen bitte.
Danke!
 
Ich hole das Thema nochmal hoch, nachdem ich das Skript eine Weile im Einsatz habe.
Denn leider ist festzustellen, dass der Ablauf nicht verlässlich funktioniert. Teilweise werden die Anhänge einfach nicht herausgegriffen. Reproduzierbar ist der Fehler insoweit, als dass er bei mehreren Scans nacheinander auftritt. Wenn ich nur einen Scan sende, klappt es "in der Regel" (ja eigentlich auch noch nicht gut genug, denn auch hier gibt es Abweichler).

Hat irgend jemand noch einen Tipp für mich?!
 
Hat irgend jemand noch einen Tipp für mich?!
Nach meiner Erfahrung ist Export von Attachments per Applescript notorisch unzuverlässig.
Es kann einfach mit dem sehr verschiedenen Aufbau von MIME-Messages nicht richtig umgehen.

Ich bin von Applescript jetzt (fast) ganz weg und extrahiere mit einer MIME-Library und einem selbstgeschriebenen Programm.
Die Details gibt's evtl. später mal, bin z.Zt. nicht am Platz.
 
  • Gefällt mir
Reaktionen: dg2rbf und ACDBRN1
Hat irgend jemand noch einen Tipp für mich?!
Muss es automatisch erfolgen?
Einzelne oder mehrere Mails oder z.B. einen intelligenten Ordner auswählen, dann über Mail > Menüleiste > Ablage > „Anhänge sichern” > Zielort wählen.
 
Du könntest dir mittels Automator eine Mail-Objekte-Abfrage als Workflow jeweils für den gewünschten Account bauen.
Die erhaltene Datei xyz.workflow lässt du dann über die Kalender-App jeden Tag zu einer bestimmten Uhrzeit öffnen.

Beides geht, ob beides in Kombination funktioniert müsstest du halt mal kurz versuchen.

Automator Mail-Objekte-Abfrage:
Mail-Objekte abfragen.png


Kalender-App:
Kalender Datei öffnen.png


Ich öffne so jeden Tag eine Datei namens Automator in iCloud, um die kleine Zicke ein wenig zur Synchronisierung zu animieren. :)
 
Ich habe mal ChatGPT gefragt und die KI hat mir ein Python Script ausgegeben.
Keine Ahnung, ob das funktioniert, aber in anderen Sprachen wie PowerShell klappen die KI Befehle gut.
Wäre vielleicht eine Option?
 
Zurück
Oben Unten