• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Eine überwältigende Zahl von Einsendungen wartet nun auf Euch, um begutachtet zu werden! Schaut selbst, welche Blüten das Thema hervorgebracht hat und stimmt dann ab, was davon Euch am besten gefällt. Hier geht es lang zur Abstimmung --> Klick

mail regeln per script erstellen

tfj

Erdapfel
Registriert
26.06.13
Beiträge
4
hi community,
mein erster beitrag hier, aber ich denke ich bin im richtigen forum gelandet.
ohne also scripten zu können, habe ich mir ein script per copy and paste ge-
bastelt, das wie folgt funktionieren soll:
Annahme: der mail-werbefilter funktioniert nicht, wie ich will.
->: ich schalte den also aus und erstelle ein script, daß einer regel, die all die unerwünschte mail
in den "spam"-ordner sortiert, die markierte adresse hinzufügt.

Code:
tell application "Mail"
    selection
end tell
tell application "Mail"
    set theSelection to selection
    set theMessage to item 1 of theSelection
    sender of theMessage
    set the clipboard to result
    tell first rule to make new rule condition at end of rule conditions with properties {rule type:from header, qualifier:equal to value, expression:(the clipboard)}
end tell
tell application "Mail"
    activate
    -- Den SystemEvents erzählen, welche Tasten betätigt werden sollen
    tell application "System Events"
        keystroke "l" using command down
    end tell
end tell

... das funktioniert soweit auch super, was ich jedoch nicht hinkriege, soweit überhaupt möglich, ist:
1.: ..daß ich mehrere mails auswähle, deren adressen dann der regel hinzugefügt werden.
2.: irgendwie nervt es, daß ich der ersten regel in der liste den befehl, die erste regel in der liste zu benutzen, zuweisen muß und nicht: "füge die regel z.b. der regel "spam" hinzu. kann man also statt "tell first rule" sowas wie "tell rule "Spam"" benutzen?
3.: ich hab den keyboard-shortcut "regeln anwenden" in mail geändert in "command + l", weil der scriptbefehl
" keystroke "l" using {command down, option down}" bei mir nicht funktioniert. um also die ganze sache auszuführen, rufe ich systemevents über einen keyboard-befehl auf. kommt mir irgendwie falsch vor. gibt es also eine befehl á la
" tell mail .... regeln anwenden ..... end tell". kommt mir eleganter vor.
4.: das gehört vermutlich nicht hierher, aber wo wir grade am schrauben sind. wie kann man das script ins kontextmenü
von mail bekommen? im sinne von: mail auswählen-> rechtsklick -> dienste: "spam regeln"
dank + grüße, thomas
macosx 10.8.4. + mail 6.5
 
Zuletzt bearbeitet:

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Hallo und herzlich Willkommen hier im Forum!

Ich habe dein Skript mal etwas bereinigt und gleich einige deiner Kriterien dabei berücksichtigt. Das Skript ist ungetestet, eventuell musst du daran also noch etwas korrigieren.

Code:
[B]tell[/B] [COLOR=#0433FF][I]application[/I][/COLOR] "Mail"
[COLOR=#4F8F00][COLOR=#000000]    [B]set[/B] [/COLOR]theSelection[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#812fdc]selection[/COLOR][/COLOR]
[COLOR=#4F8F00][COLOR=#000000]    [B]repeat[/B] [B]with[/B] [/COLOR]theMessage[COLOR=#000000] [B]in[/B] [/COLOR]theSelection[/COLOR]
[COLOR=#4F8F00][COLOR=#000000]        [B]set[/B] [/COLOR]theSender[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#812fdc]sender[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]theMessage[/COLOR]
[COLOR=#0433FF][COLOR=#000000]        [B]tell[/B] [/COLOR][I]rule[/I][COLOR=#000000] "Spam" [B]to[/B] [/COLOR][B]make [/B]new [I]rule condition [/I]at[COLOR=#000000] [B]end[/B] [B]of[/B] [/COLOR][I]rule conditions [/I]with properties[COLOR=#000000] {[/COLOR][COLOR=#812fdc]rule type[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#5d3292]from header[/COLOR][COLOR=#000000], [/COLOR][COLOR=#812fdc]qualifier[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#5d3292]equal to value[/COLOR][COLOR=#000000], [/COLOR][COLOR=#812fdc]expression[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#4f8f00]theSender[/COLOR][COLOR=#000000]}[/COLOR][/COLOR]
    [B]end[/B] [B]repeat[/B]
    [B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "System Events"
        [B]tell[/B] [COLOR=#0433ff][I]process[/I][/COLOR] "Mail"
[COLOR=#0433FF][B]keystroke[/B][COLOR=#000000] "l" [/COLOR]using [COLOR=#5d3292]command down[/COLOR][/COLOR]
        [B]end[/B] [B]tell[/B]
    [B]end[/B] [B]tell[/B]
[B]end[/B] [B]tell[/B]

Zu...

1.: Dafür musst du in einer Schleife die markierten Mails durchgehen. Bei AppleScript geht das mit repeat with neueVariable in Liste.

2.: Du kannst natürlich auch die Regel beim Namen nennen.

3.: Unter Ablage->Funktionsverzeichnis öffnen... kannst du das Programm suchen, zu dem du einen Befehl suchst. Dort sind alle Befehle aufgelistet. In diesem Fall scheint es aber keinen Befehl zu geben, du musst also den Weg über den Shortcut nehmen.

4.: Du kannst mit Automator einen Dienst erstellen und dort das AppleScript einbauen.


Am Schluss noch etwas:

Auf Apfeltalk wird viel Wert auf Lesbarkeit der Beiträge gelegt. Dazu gehört eine korrekte Groß-/Kleinschreibung und das Benutzen der
Code:
-Tags für Code. Bitte achte darauf, das erleichtert es uns dir zu helfen.
 
  • Like
Reaktionen: wheeler

tfj

Erdapfel
Registriert
26.06.13
Beiträge
4
Hallo Pill,
grandios, keine 8 Stunden hats gedauert und Frage 1-3 sind beantwortet. Vielen Dank für die Mühe und das herzliche Willkommen.
Hab den
Code:
-tag eingebaut, der Beitrag sah ja wirklich übel aus, Teufel Alkohol. Final sieht das Script also jetzt so
aus:
[CODE]
[B]tell[/B] [COLOR=#0000ff]application[/COLOR] "Mail"
    [B]set[/B][COLOR=#008000] theSelection[/COLOR][B] to[/B] [COLOR=#800080]selection[/COLOR] 
    [B]repeat with[/B][COLOR=#008000] theMessage[/COLOR] [B]in[/B] [COLOR=#008000]theSelection[/COLOR] 
          [B]set [/B][COLOR=#008000]theSender[/COLOR][B] to[/B] [COLOR=#800080]sender[/COLOR] [B]of[/B][COLOR=#008000] theMessage[/COLOR]
        [B]tell[/B] [COLOR=#0000ff]rule[/COLOR] "Spam" [B]to[/B] [COLOR=#0000ff][B]make[/B] new rule condition at[/COLOR] [B]end of[/B] [COLOR=#0000ff]rule conditions with properties[/COLOR] {[COLOR=#800080]rule type[/COLOR] [COLOR=#4b0082]:from header[/COLOR] , [COLOR=#800080]qualifier[/COLOR][COLOR=#4b0082]:equal to value[/COLOR], [COLOR=#800080]expression[/COLOR]: [COLOR=#008000]theSender[/COLOR]}
[B]    end repeat
end tell
tell[/B] [COLOR=#0000ff]application[/COLOR] "Mail"
 [B]   [COLOR=#0000ff]activate[/COLOR]
    tell[/B] [COLOR=#0000ff]application[/COLOR] "System Events"
        [COLOR=#0000ff][B]keystroke[/B][/COLOR] "l" [COLOR=#0000ff]using[/COLOR] [COLOR=#4b0082]command down[/COLOR]
[B]    end tell
end tell[/B]
Die "Regeln anwenden" Aktion funktioniert bei mir nur dann, wenn ich sie am Ende separat aufrufe.

Zu Frage 4: Ich habe den Dienst in Automator schon erstellt und kann den auch über das Menü Mail-Dienste-Spamregeln ausführen. Ich dachte nur, ich würde das wie im Finder auch ins Rechtsklick-Kontextmenü bekommen. Ich schätze aber, das gehört hier ohnehin nicht her und werde das evtl. nochmal im Forum Dienstprogramme & Utilities posten.

Beste Grüße, Thomas
 

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Doch doch, da bist du hier schon richtig. Das hat wenig mit Dienstprogrammen und Utilities zu tun.

Nochmal etwas ausführlicher:

Du öffnest Automator und wählst im Auswahlfenster "Dienst" aus. Der Dienst sollte dann so aussehen:

Bildschirmfoto 2013-06-27 um 13.38.57.png

Der Dienst sollte dann erscheinen, wenn du einen Rechtsklick in Mail machst oder unter Mail->Dienste

Edit: Gerade gesehen, dass das mit dem Rechtsklick in Mail nicht klappt. Du kannst aber für den Dienst einen Shortcut unter Systemeinstellungen->Text & Tastatureingaben festlegen.