Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Anhang sichern per Mail Regel?

Anhang sichern per Mail Regel?

jogoto11.07.0511:36
Geht das? Script? Automator?
Ich bekomme täglich Mails mit Anhang zum archivieren. Alle haben den gleichen Betreff; von daher also kein Problem. Ich würde gerne nur den Anhang automatisch sichern und die Mail dann löschen lassen. Ideal wäre auch noch eine Umbenennung des Angangs, da der leider auch immer gleich benannt ist.
Hat jemand so was?
0

Kommentare

Michael Schmidt
Michael Schmidt11.07.0513:12
1. Schritt:
Kopiere folgenden Inhalt in ein neues Scripteditor-Fenster:

-------------------------------------------
property theAttachmentPath : ((path to desktop) as string) & "MailEingang"

on run
tell application "Mail"
set theSelection to selection
if (count of theSelection) > 0 then
set attachmentCount to my saveAttachments(theSelection)
activate -- make sure Mail is frontmost app after running the script...
if attachmentCount > 0 then
display dialog (attachmentCount as string) & " attachment(s) found in selected message(s) and saved to folder " & return & theAttachmentPath buttons {"OK"} default button 1
else
display dialog "No attachments found in selected message(s)." buttons {"OK"} default button 1
end if
else
display dialog "Please select one or more messages in Mail before running this script." buttons {"OK"} default button 1
end if
end tell
end run

on perform_mail_action(info)
tell application "Mail"
set selectedMessages to |SelectedMessages| of info
my saveAttachments(selectedMessages)
end tell
end perform_mail_action

on saveAttachments(messageList)
set attachmentCount to 0
tell application "Mail"
repeat with eachMessage in messageList
-- check for attachments
set theHeaders to all headers of eachMessage
set AppleScript's text item delimiters to "multipart/mixed"
if number of text items in theHeaders > 1 then
-- we have a multipart/mixed message so we might have attachments...
set theSource to source of eachMessage
set AppleScript's text item delimiters to ""
set tempFileName to sender of eachMessage & " Attachments"
set tempFile to theAttachmentPath & tempFileName
open for access file tempFile with write permission
set eof file tempFile to 0
write theSource to file tempFile as string
close access file tempFile
tell application "Finder" to set fileCount to count of every file in alias theAttachmentPath
tell application "StuffIt Expander" to expand {alias tempFile} into alias theAttachmentPath with delete originals
-- now try to clean up files we don't want...
-- this can be different due to pref settings in Stuffit Expander
tell application "Finder"
set useSubFolder to true
set theFolders to get (every folder in alias theAttachmentPath whose name is (tempFileName & " Folder"))
if (count of theFolders) = 1 then
-- option 1: files in newly created subfolder:
set thePath to theAttachmentPath & tempFileName & " Folder"
else
-- option 2: no subfolder, files directly on Desktop:
set thePath to theAttachmentPath
set useSubFolder to false
end if
delete (every file in alias thePath whose name starts with tempFileName & ".attachment")
if (count of every file in alias thePath) = 0 then
--delete alias thePath
end if
if useSubFolder then
set attachmentCount to attachmentCount + (count of every file in alias thePath)
else
set attachmentCount to attachmentCount + (count of every file in alias thePath) - fileCount + 1
end if
end tell
end if -- multipart/mixed message
end repeat
end tell
return attachmentCount
end saveAttachments
-------------------------------------------

2. Schritt:
Speichere das Script in den Ordner /Library/Scripts/Mail Scripts/Rule Actions/
und nenne es z.B. saveAttachments oder so

3. Schritt:
Erstelle einen Ordner "MailEingang" auf deinem Schreibtisch oder passe den Pfad in dem Script an (erste Zeile)

4. Erstelle in Mail eine Regel, in der du bei Erfüllen der Bedingungen
___a. ein Applescript ausführen lässt, wähle das eben erstellte Script.
___b. die bearbeitete Mail verschieben lässt (Löschen lassen würde ich sie nicht, lieber sammeln und später selbst löschen!)

Du kannst das Script auch manuell starten. Selektiere dafür eine Mail in Mail und wähle "Ausführen" im ScriptEditor.

Bevor ich mich mit fremden Federn schmücke: Ich selber habe das Script aus dem Apple Applescript-Forum.

So, viel Spaß damit!

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
jogoto11.07.0516:08
Wow, danke für die ausführliche Hilfe, auch wenn Du den Vogel nicht selbst geschossen hast (wegen der Federn, meine ich).

Leider bekomme ich einen Fehler, den ich Mangels AppleScript-Kenntnisse nicht verstehe:
„Finder“ hat einen Fehler erhalten: „every file of alias "home:jogoto:Desktop:MailEingang"“ kann nicht gelesen werden.
Wobei der Pfad richtig ist und es den Ordner auch gibt. Nur was bedeutet „every file of alias " und warum steht dann "“? Da scheint ja etwas zwischen den "“ zu fehlen?
Da danach auch etwas von "StuffIt Expander" steht, bin ich mir nicht sicher, ob das die richtige Lösung für mich ist. Der Anhang, mit dem ich getsetet habe, ist ein ungepacktes PDF. Die Anhänge, die später behandelt werden sollen sind zwar .tar.gz, sollen aber nicht entpackt werden.

Sorry wenn ich Deine Hilfsbereitschaft gleich mit Zusatzfragen ausnutze
0
Michael Schmidt
Michael Schmidt11.07.0516:19
Zur zweiten Frage:
StuffIt muss in diesem Zusammenhang sein, weil es die eleganteste Lösung darstellt. Das Problem ist, das man per Applescript nicht direkt auf die Attachments von erhaltenen Mails zugreifen kann. Die Technik ist also folgende: Speichere den gesamten Quelltext der Mail als Textfile und lasse es von StuffIt öffnen. StuffIt erkennt die im Quelltext der Mail als base64-kodierten Anhänge und macht daraus wieder Dateien, also aus kodierten PDFs wieder korrekte PDFs usw. Also wirklich auch korrekt für deinen Zweck

Zur ersten Frage:
a)
Mit den "" ist nur doppelt, weil sowohl die Fehlermeldung in Anführungszeichen gesetzt wird, als auch der Pfad innerhalb der Fehlermeldung.

b)
Hm
Irgendwo ist wohl eine Stelle "every file of ..." gefolgt von einer Pfadangabe, die er wohl nicht so gern mag Und du hast wirklich auf deinem Schreibtisch einen Ordner "MailEingang" (mit Groß- u. Kleinschreibung)?
Sollte eigentlich funzen, das Script...

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
Michael Schmidt
Michael Schmidt11.07.0516:24
Da ist auch eine Zeile, die scheint fehlerhaft zu sein, weswegen sie auskommentiert ist:
--delete alias thePath

Die hast du auch so gelassen, oder? Ich meine die beiden -- davor!

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
jogoto11.07.0516:52
Ja, hab den Namen MailEingang aus Deinem Text kopiert und hab im Script auch nichts verändert, um es erst mal zu testen.

Andere mögliche Fehlerquellen?
- Mail Version 2.0.1 aus Mac OS 10.4.1? (E-Mails werden ja nun einzeln und nicht mehr in Mailboxen gespeichert)
- Homeverzeichnis (und somit auch der Desktop) auf dem Server? (wobei der Pfad stimmt)
- StuffIt Expander Version 9.0.1? (da Apple in 10.4 ja keinen StuffIt Expander mehr mitliefert)
0
Michael Schmidt
Michael Schmidt11.07.0517:00
DU kannst prüfen, ob der Pfad korrekt ist, indem du ein neues Script aufmachst und einfach
alias "home:jogoto:Desktop:MailEingang"
eingibst und "Übersetzen" drückst. Durch das alias davor guckt er bereits beim Kompilieren, ob der Pfad korrekt ist. Kommt keine Fehlermeldung und er färbt das Miniscript einfach ein, so stimmt der Pfad, dann müssen wir weiter gucken. Sonst musst du ein bisschen mit dem Pfad spielen, bis er es schluckt…

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
jogoto11.07.0517:33
Pfad stimmt, zumindest ist das Miniscript ohne Fehler durchgelaufen.

Frage: ist es richtig, dass das Texfile auf dem Schreibtisch und nicht im Ordner "MailEingang" auf dem Schreibtisch auftaucht?
0
Michael Schmidt
Michael Schmidt11.07.0518:13
Ja, ist bei mir auch so, allerdings blinkt es dan nur kurz auf und wird dann in den Papierkorb geschmissen. Dies klappt wahrscheinlich bei dir nicht, weil vorher die Fehlermeldung geworfen wird.

Liegt denn im Ordner "MailEingang" etwas drin, nachdem das Script gelaufen ist?
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
jogoto11.07.0518:19
Nein, leider nicht. Und das Textfile bleibt liegen.
0
jogoto11.07.0518:36
Ich würde gerne mal versuchen den Ordner "MailEingang" nicht auf dem Server zu erstellen. Vieles läuft anderst bei Home-Ordnern auf dem Server...
Wie muss mein Pfad lauten, wenn mein Ordner "MailEingang" direkt auf einer zweiten lokalen Festplatte Namens "Arbeitsplatte" liegt?
0
Michael Schmidt
Michael Schmidt11.07.0518:51
Dann scheint der Fehler bei
tell application "Finder" to set fileCount to count of every file in alias theAttachmentPath
zu liegen.
Mach mal bitte ein neues Script und schreib da mal das hier hinein:

property theAttachmentPath : ((path to desktop) as string) & "MailEingang"
tell application "Finder" to set fileCount to count of every file in alias theAttachmentPath
display dialog fileCount

Klappt das?
Sollte nicht

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
Michael Schmidt
Michael Schmidt11.07.0518:52
Uups, du warst schneller

Arbeitsplatte:MailEingang
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
jogoto11.07.0519:07
Das neue Script läuft nicht (gleiche Fehlermeldung)

Der neue Pfad kann so nicht stimmen. Der Fehler lautet nun: „Mail“ hat einen Fehler erhalten: Die Datei „file Home:jogoto:Desktop:Arbeitsplatte:MailEingangChristian Bjoerkamo Attachments“ wurde nicht gefunden.
Auffällig ist, dass es immer noch über das Home Verzeichnis geht und dass zwischen dem Orden "MailEingang" und dem Namen des Textfiles kein : zu finden ist.

Irgend müsste es doch "property theAttachmentPath : ((path to volumes) as string) & "Arbeitsplatte:MailEingang"" oder so heisen, denn desktop ist ja nun nicht mehr richtig, aber leider geht das nicht.
0
Michael Schmidt
Michael Schmidt11.07.0519:18
Ja, ach so klar:
property theAttachmentPath : "Arbeitsplatte:MailEingang"

Sollte klappen…
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
jogoto11.07.0519:44
Jetzt funktioniert das Script. Lag also doch an meinem Server-Account.
Nun besteht noch das Problem, dass ich dieses Script zwar manuell sterten kann, aber als Mail-Regel passiert gar nichts. Muss das Script in einer bestimmten Form abgespeichert werden?
0
jogoto11.07.0519:52
Korrektur, es funktioniert ausgerechnet bei den Mails (Anhängen) nicht, für die ich es eigentlich brauche. Bei manueller Ausführung kommt die Meldung "kein Anhang gefunden"??? Anhang ist wie gesagt ein .tar.gz
0
Michael Schmidt
Michael Schmidt11.07.0519:52
Schön, dass es funzt

Hm, eigentlich nicht...
Als .scpt reicht.
Bei mir hat es am Anfang auch nicht geklappt, auf einmal lief es aber ohne Probleme.

Vielleicht mal Mail neustarten ?!
Oder die Regel neu speichern, vielleicht cacht Mail die Scripts...

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
jogoto11.07.0520:03
Nochmal Korrektur: es treten beide Fehler auf: als Regel passiert gar nichts (bei allen Mails und auch nach Mail- Rechnerneustart) und bei manueller Ausführung tritt oben genannter Fehler bei den .tar.gz Dateien auf.
Ich glaube ich gebe es auf, ich möchte Deine Hilfsbereitschaft auch nicht überstrapazieren.
Vielen Dank noch mal und ich werde einfach die ganzen Mails in einen andderen Ordner schieben oder das Ganze von Hand erledigen. Das Script ist trotzdem nett und findet sicher seine Anwendung.
Also Danke und einen schönen Abend noch

Wolfram (jogoto)
0
Michael Schmidt
Michael Schmidt11.07.0520:13
Hm, schade

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
SD_92104
SD_9210411.07.0522:47
amp;:-&:-&:-& Warum geht hier immer alles kaputt, wenn man bei einem PC mit US-Tastatur Umlaute eingeben will? Ich werde jetzt also den ganzen Krams nochmal schreiben, allerdings ohne Umlaute amp;:-&:-&

Also,

1) Das Skript ist urspruenglich von mir
2) Ich bin wie gesagt im Moment an einem PC, kann daher das oben kopierte nicht mit dem Original vergleichen (ich bin mir nicht sicher, ob "delete alias thePath" wirklich auskommentiert sein sollte
3) AppleScript und FileVault sind keine Freunde - falls FileVault aktiviert wurde, sollte der Pfad in der property am Anfang auf ein Verzeichnis ausserhalb der FileVault Hierarchie zeigen
4) Attachments in Mails, die digital signiert (nicht verschluesselt) wurden, werde mit dem Skript in der obigen Art wohl nicht erkannt - ein Aendern von

set AppleScript’s text item delimiters to "multipart/mixed"

in

set AppleScript’s text item delimiters to "multipart/"

sollte dies beheben (und hoffentlich zu besseren Resultaten fuehren)

Andreas
„There are only 10 kinds of people - those who understand binary and those who don't.“
0
jogoto11.07.0523:01
Danke Dir, ich werde es morgen mal testen. Ich hab jedoch wenig Hoffnung. FileVault ist bei mir nicht aktiv. "delete alias thePath" kommt ja erst sehr spät im Script und sollte es eigentlich nicht am loslaufen hindern!? Das Mail ist sicher nicht signiert. Es kommt von einem Server und mailt mir das letzte MySQL Backup als Anhang.
Mal sehen...
0
jogoto12.07.0513:47
SD_92104

"delete alias thePath" sorgt bei mir mal locker dafür, dass der Ordner "MailEingang" gelöscht wird.

Die Änderung von "multipart/mixed" auf "multipart/" bringt keine Änderung.
Leider.
Danke trotzdem, ich glaube ich bleibe beim manuellen verschieben...
0
Michael Schmidt
Michael Schmidt12.07.0513:56
Evtl. löst dies hier ein paar Probs:
In den StuffIt Expander Einstellungen
Continue to expand (if possible) auf aus
Create Surrounding Folder auf never stellen

Warum es aber nicht losläuft…
Schon probiert, die Regel zu löschen und sie neu zu erstellen?

CU
Schmiddl

Andreas:
Ja, tatsächlich von einem Andreas, das Script Von dir war es im Dezember 2003 noch ohne Auskommentierung, wurde aber nochmal von jmd. gepostet, da war die Zeile auskommentiert
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
Michael Schmidt
Michael Schmidt13.07.0519:43
Eben getestet!!

Ergänze dieses hier in dein Script, z.B. ganz ans Ende oä. und alles sollte funzen

---------------------------------
using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
my saveAttachments(theMessages)
end perform mail action with messages
end using terms from
---------------------------------

So läuft es dann auch als Regel-Script :-D

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
jogoto13.07.0519:54
Nö, leider passiert gar nichts...
0
Michael Schmidt
Michael Schmidt13.07.0519:59
Och, manno amp;
Naja, war noch ein Versuch…
(Bei mir funzt es definitiv!)

CU
Schmiddl
„Trautman: "Er wird kommen und er wird mich hier rausholen." Russischer Offizier: "Was, glaubt dieser Mann, wer er ist? Gott?" Trautman: "Nein, Gott kennt Gnade!"“
0
jogoto13.07.0520:05
Danke für die Mühe. Ich glaube ich habe ein generelles Problem mit Scripts und Mail. Werde mal weiter forschen...
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.