Mail-Regel aus emails automatisch erstellen?

walfrieda

walfrieda

Aktives Mitglied
Thread Starter
Dabei seit
29.03.2006
Beiträge
9.252
Reaktionspunkte
1.173
Kennt jemand ne Möglichkeit (oder einen Ansatzpunkt um es selbst zB mit Automator zusammenzuklicken), um für Mail automatisch eine neue Regel erstellen zu lassen? Ich stelle mir folgendes vor:

* Ich markiere eine Reihe von emails, die ich in Zukunft gleich behandeln möchte (zum Beispiel bestimmte gewünschte Werbung/Newsletter)
* Dann mache ich die gesuchte "Aktion X"
* Ergebnis ist eine neue Regel in Mail, die zum Beispiel (sollte irgendwie wählbar sein) die Domänenteile der Absenderadressen als Kriterium eingetragen hat - was mit den Mails passieren soll sollte auch einstellbar sein (Labels geben, als gelesen markieren, in ein Postfach schieben oä.). Letzteres ist aber nur eine Kleinigkeit, das man auch manuell in die Regel schreiben könnte.

Intelligente Postfächer sind in meinem Fall keine Lösung, weil ich die emails tatsächlich verschieben will um sie aus der Inbox raus zu haben.
 
Du forderst von dem Programm Muster zu erkennen, und Muster sind nicht leicht zu erkennen für ein Programm.
 
Du forderst von dem Programm Muster zu erkennen, und Muster sind nicht leicht zu erkennen für ein Programm.

nein, ich will einfach nur den Domänenteil (den hinter @) von mehreren emails extrahieren (das ist nun wirklich trivial), und diese in eine Regel für Mail umwandeln (mit or verknüpft). Für den letzteren Teil bräuchte ich Hilfe, den ersten bekomm ich mit Applescript oder Perl ganz schnell hin.
 
ok, für den zweiten Teil habe ich hier ein Template gefunden. Runtergestrippt auf das wesentliche ist es jetzt vorläufig so:

Code:
tell application "Mail"
	set _rulename to "NeueRegel"
	set _lastposition to a reference to end of rules
	set _firstposition to a reference to beginning of rules
	set _ruleproperties to {color message:none, delete message:false, forward text:"", forward message:"", mark flagged:false, mark read:false, play sound:none, redirect message:"", reply text:"", run script:false, all conditions must be met:false, copy message:"", move message:"", highlight text using color:false, enabled:true, name:_rulename, should copy message:false, should move message:false, stop evaluating rules:false}
	set _ruleconditionproperties to {expression:"", header:"", qualifier:none, rule type:none}
	set _rule to make rule at _lastposition with properties _ruleproperties
	set _filter to make rule condition at beginning of _rule with properties _ruleconditionproperties
end tell

läuft zwar noch nicht wegen eines AppleEvent Handler-Fehlers, aber das bekomme ich vermutlich noch hin...
 
bin ein bisschen weiter, geht alles noch einfacher:

Code:
tell application "Mail"
	set _rule to make new rule with properties {move message:"~/Library/Mail/Mailboxes/Werbung.mbox", name:"Test", enabled:true} at end of rules
	make rule condition at beginning of _rule with properties {expression:"@domain.com", header:"From", qualifier:does contain value, rule type:none}
end tell
 
Das funktioniert damit...und es sind noch ein paar andere nützliche Funktionen enthalten.
 
  • Gefällt mir
Reaktionen: walfrieda
Danke, guter Tipp. An diese Scriptsammlung habe ich gar nicht mehr gedacht!
 
So, nachdem mir das alles nicht gefallen hat, habe ich mich hingesetzt und selbst ein Applescript dazu geschrieben. Ich kopiere es hier rein falls irgendjemand mal per Suchfunktion hier herkommt und die Lösung für mein (dann vermutlich sein) Problem lesen möchte.

Man sehe mir nach, daß die Texte und Kommentare auf Englisch sind, das mache ich standardmässig so. Wer möchte kann es gern eindeutschen – solange der Code nicht verändert wird spielt das keine Rolle.

Das Skript teilt sich in drei Teile. Im ersten wird eine Liste der Domänen erstellt, von denen die in Mail ausgewählten Emails kommen. Jeder Eintrag hat die Form @domänenname.xxx, wobei jede Domain nur einmal in die Liste aufgenommen wird. Ich habe das so gemacht, weil ich oft emails von verschiedenen Leuten aus der selben Firma bekomme, die ich alle gleich behandeln möchte. (Zum besseren Verständnis: es handelt sich um gewollte, berufsbezogene Werbung, die ich aber nicht in meiner Inbox haben möchte sondern in einer getrennten, lokalen Mailbox). Wer nicht nur die Domänen sondern die ganzen Absender auswerten will, der muss hier den Code entsprechend vereinfachen.
Im zweiten Teil wird der User nach einem Namen für die neue Regel gefragt - nur Namen die nicht schon vorhanden sind werden akzeptiert. Alternativ kann der User hier auch die Erstellung einer neuen Regel abbrechen.
Im dritten Teil wird die Regel zu Mail zugefügt. Dieser Teil war gar nicht so einfach, wegen der miserablen Dokumentation der Scriptmöglichkeiten von Mail. Naja, jetzt läuft's… Wer das Skript verwenden will muß hier den Namen der gewünschten Ziel-Mailbox ins Skript schreiben - oder zusätzlichen Code einfügen um das Ziel vom User auswählbar zu machen. Das war mir jetzt zuviel Geschäft, und ich brauch's ja auch nicht. Sollte aber sehr einfach sein.

In der Benutzung ist das Ganze sehr einfach: In Mails mehrere emails auswählen, Skript starten, Namen für die neue Regel eingeben, fertig. In Mail wird die Regel manchmal erst angezeigt, wenn man die Preferences neu öffnet (nämlich dann wenn diese beim Ablauf des Skripts offen waren).

So sieht das Skript jetzt aus:


Verbesserungsvorschläge nehme ich natürlich dankbar entgegen.
 
Und was wenn die gesuchte "Aktion X" Drag&Drop in einen Ordner ist?
 
Und was wenn die gesuchte "Aktion X" Drag&Drop in einen Ordner ist?

was genau meinst du? Welche Art Ordner? Ein Finder-Ordner, in dem du die email archivieren willst, also ausserhalb von Mail? Wieso "drag&drop", das ist ja nix anderes als verschieben, das das Skript jetzt macht - halt in eine Mailbox statt in einen Ordner ausserhalb von Mail.app.
Wenn du mal genauer beschreibst was du machen willst, kann ich mal schauen was sich am Code machen lässt.
 
Zurück
Oben Unten