AppleScript & Mail: Mail aus der Inbox auswählen

M

mikemobile

Neues Mitglied
Thread Starter
Dabei seit
09.05.2013
Beiträge
7
Reaktionspunkte
0
Hallo Zusammen

Ich möchte ein Script schreiben was folgenden macht:

Es verschiebt E-Mail aus der Inbox (IMAP) in einen spezifischen Ordner anhand der folgenden Regeln:
  1. Die E-Mail muss in der Inbox sein
  2. Die E-Mail muss ein bestimmtes Flag haben
  3. Die E-Mail muss min. 2 Tage alt sein
Meine Herausforderung: Das Script funktioniert soweit ausser, dass es alle Ordner durchsucht und nicht nur die Inbox.

Mit dem Script sollen alle Newsletter, welche von Mail automatisch ein Flag erhalten, nach 2 archiviert werden.

Vielen Dank, Michael

----------

-- how old the message should be
set modDate to (2)

-- which flag the message must have
set theFlag to 4 -- Starts with 0

-- which account should be checked
set theMailbox to "mn@fd.ch"

-- target folder
set theMailboxFolder to "01 Newsletter"

tell application "Mail"
-- repeat with theMessage in (every message) of (mailbox "INBOX" of account theMailbox)
repeat with theMessage in (every message of mailbox "INBOX" of account 1)

if flag index of theMessage is equal to theFlag and date received of theMessage is less than ((current date) - modDate * days) then

set mailbox of theMessage to mailbox theMailboxFolder of account theMailbox

end if
end repeat
end
tell
 
mir fehlt da vor allem "move message to mailbox".
---
bitte code tags benutzen [+]
Code:
tell application "Mail"
    every account
    set myacc to account "gmx.net"
    every mailbox of myacc
    set myinbox to mailbox "INBOX" of myacc
    set mysent to mailbox "Sent" of myacc
    count messages of myinbox
    count messages of mysent
end tell
 
Zuletzt bearbeitet:
Ich verschiebe die Mail mittels
Code:
set mailbox of theMessage to mailbox theMailboxFolder of account theMailbox
Dies funktioniert. Nur werden dabei alle Mails in allen Ordner durchsucht und verschoben anstatt nur aus der Inbox. Wie kann ich dies einschränken?
 
also funktioniert es nicht und warum probierst du nicht move?

heisst dein account wirklich "mn@fd.ch" oder ist das nur die mailadresse?

mach mal "every account" und definiere account und mailboxen gleich richtig (siehe #2), damit du auch in der richtigen mailbox landest.
 
Zuletzt bearbeitet:
Das Verschieben der E-Mail funktioniert. Mein Problem ist, dass auch E-Mails aus dem Papierkorb verschoben werden und nicht nur aus der Inbox.

Ja der Account heisst "mn@fd.ch" und ist auch so im Mail ersichtlich.

Ich hab dein Code übernommen:
Code:
-- how old the message should be
set modDate to (2)

-- which flag the message must have
set theFlag to 4 -- Starts with 0

-- target folder
set theMailboxFolder to "01 Newsletter"


tell application "Mail"
    every account
    set myacc to account "mn@fd.ch"
    every mailbox of myacc
    set myinbox to mailbox "INBOX" of myacc
   
    repeat with theMessage in every message of myinbox
        if flag index of theMessage is equal to theFlag and date received of theMessage is less than ((current date) - modDate * days) then
           
            -- Zur Kontrolle lasse ich mir die Mails anzeigen welche das Script gefunden hat
            display dialog (flag index of theMessage as string) & " " & (subject of theMessage as string) & "   " & (date received of theMessage as string) & ((current date) as string)
       
            move theMessage to mailbox theMailboxFolder of account myinbox
       
        end if
    end repeat

    count messages of myinbox
end tell

Trotzdem werden auch jetzt Mails verschoben, welche ich in den Papierkorb gelegt habe.
 
das sieht so aus, als wärst du in allen mailboxen und nicht in der INBOX.

falsch ist schon mal "move ... account myinbox" und du brauchst nicht alles zu übernehmen,
manches wie every account ist nur fürs debugging.
wie lange machst du applescript?

machen wir's doch stück für stück.

mach im editor unten links "Events / Antworten" beide an.
dann zeig mal das ergebnis, was unten ausgegeben wird
Code:
tell application "Mail"
    every account
    set myacc to account "mn@fd.ch"
    every mailbox of myacc
    set myinbox to mailbox "INBOX" of myacc
    set mynewsbox to mailbox "01 Newsletter" of myacc
    count messages of myinbox
    count messages of mynewsbox
end tell
 
Zuletzt bearbeitet:
Hab schon lange nicht mehr mit Apple Script gearbeitet. Bin etwas eingerostet wenn du das meinst ;-)

count messages of myinbox >> Result: 7963
count messages of mynewsbox >> Result: 6

Code:
tell application "Mail"
    get every account
    get account "mn@fd.ch"
    get every mailbox of account id "4D975DE9-2156-47FF-B30D-F0DC900FBB61"
    get mailbox "INBOX" of account id "4D975DE9-2156-47FF-B30D-F0DC900FBB61"
    get mailbox "01 Newsletter" of account id "4D975DE9-2156-47FF-B30D-F0DC900FBB61"
    count every message of mailbox "INBOX" of account id "4D975DE9-2156-47FF-B30D-F0DC900FBB61"
    count every message of mailbox "INBOX/01 Newsletter" of account id "4D975DE9-2156-47FF-B30D-F0DC900FBB61"
end tell
Result:
6
 
ist das so ein geheimnis? ich sehe immer nur deine veränderungen und nicht das, was ich eigentlich sehen will.

und warum fängst du denn jetzt mit der account id an? every account zeigt doch sicher mindestens einen passenden account (den für mn@...).
deine optimierungen kannst du doch dann mal irgendwann vornehmen, wenn das ziel überhaupt erreicht ist.
 
Was ist ein Geheimnis?
Ich hab genau den Code von Dir übernommen und ausgeführt. Im letzten Post habe ich den Inhalt aus dem "Events" nach dem Ausführen deines Codes eingefügt.
 
hast du "events" und "antworten" oder nur "events"?
zeig mal nur "every account" (das komplette ausgabefenster).

und mach am besten gleich ein neues scriptfenster auf.
 
Zurück
Oben Unten