Ich habe ein kleines Problem. Vielleicht könnt ihr mir dabei helfen. Ich fotografiere viele Portraits für einen Kunden. Wie 200 jeden Tag. Ich muss jedes einzelne Portrait per Mail mailen. Eine Galerie mit allen Porträts in einem ist aus Datenschutzgründen nicht erlaubt. Der Kunde will definitiv E-Mails. Ich habe versucht, eine Applescript/Automator-Aktion zu programmieren, um dies automatisch zu tun.
Mein Plan ist, alle Dateien wie folgt zu benennen: name@client.com_2847.jpg und die Aktion den Rest der Magie erledigen zu lassen.
Es funktioniert irgendwie, außer dass ich die E-Mail-Adresse nicht aus der JPG-Datei extrahieren kann.
Wie extrahiere ich die E-Mail aus der Datei (z. B. durch Löschen der letzten 9 Ziffern) und füge sie als Empfänger ein?
Ich habe hier eine ähnliche Frage gesehen: Automator -> Datei an E-Mail senden (von Dateiname)
aber aus irgendeinem Grund bekomme ich viele Syntaxfehler.
Danke!
Da Sie in Ihrer Frage keinen Code, keine Fehlermeldung(en) oder auch nur wie Sie Ihre Lösung implementiert haben, biete ich das Folgende als Beispiel dafür, wie ich die anstehende Aufgabe automatisieren könnte. Beachten Sie, dass ich, obwohl ich mir den Link in Ihrer Frage angesehen habe , nichtsdestotrotz, da er für Outlook war und Sie die Frage mit mail.app markiert haben , ignorieren werde, was verlinkt war, und meinen Weg von Grund auf neu fortsetzen werde.
In diesem Beispielszenario habe ich eine hierarchische Ordnerstruktur unter ~/Photos erstellt , zB ~/Photos/Clients/Name/Emailed Photos , und dies ist der Ordner, in den ich die Zielfotos ziehe, die die Namenskonvention haben, zB name @client.com_2847.jpg und den Ordner, an den der Automator-Ordneraktions- Workflow angehängt wird.
Im Automator :
Wenn Sie jetzt Fotos mit der Namenskonvention, z. B. name@client.com_2847.jpg , in den Zielordner ziehen, z. B. ~/Photos/Clients/Name/Fotos per E-Mail , wird eine E-Mail für jedes Foto erstellt und die Zieldatei angehängt. Anfänglich wird die E-Mail nicht automatisch gesendet , bis Sie das Kommentarzeichen entfernen, das --
von vor der -- send theMessage
Codezeile entfernen und die Änderungen speichern. Dies ist zunächst auskommentiert, sodass Sie mit einer Datei testen und Ihre Betreff- und Nachrichteneinstellungen Ihren Anforderungen anpassen können. Ich würde eine Datei mit Ihrer E-Mail-Adresse zu Testzwecken verwenden, indem ich zuerst eine und dann mehrere gleichzeitig mache.
Betreff und Inhalt der E-Mail-Nachricht sind zunächst auf „Porträts“ bzw. „Foto angehängt“ als Platzhalter gesetzt. Zusätzlich gibt es eine weitere Zeile mit kommentiertem Code , -- delay 2
, über der -- send theMessage
Codezeile , die Sie möglicherweise implementieren müssen/möchten, wenn Sie eine große hinzufügen Anzahl von Dateien gleichzeitig in den Zielordner, an den die Ordneraktion angehängt ist, da schnelles Senden Probleme verursachen kann. Beachten Sie, dass der Wert des Befehlsdelay
muss möglicherweise höher eingestellt werden, um den Bedingungen gerecht zu werden, und Sie müssen nur einige Tests durchführen, um zu sehen, was für Sie funktioniert. Während ich einige Tests durchgeführt habe, habe ich eine sehr kleine Datei (3 KB) verwendet, die ich zu Testzwecken repliziert und nacheinander benannt habe. Ich gehe davon aus, dass Ihre Fotos viel größer sein werden.
AppleScript -Code :
property theMessageSubject : "Portraits"
property theMessageContent : "Photo attached."
on GetTheRecipientNameFrom(theFilename)
-- # Get the filename portion of the alias passed to the Folder Action.
set AppleScript's text item delimiters to ":"
set theFilename to last item of text items of theFilename
set AppleScript's text item delimiters to ""
-- # Make sure the filename contains both an '_' and "@".
-- # This doesn't guarantee a properly formed email address,
-- # however it does attempt to validate what was passed as one.
if theFilename contains "_" and theFilename contains "@" then
set AppleScript's text item delimiters to "_"
set theFilename to first item of text items of theFilename
set AppleScript's text item delimiters to ""
return theFilename
else
return ""
end if
end GetTheRecipientNameFrom
on run {input, parameters}
set fileCount to (count of items of input)
set i to 1
repeat fileCount times
set theMessageAttachment to item i of input
set theRecipient to GetTheRecipientNameFrom(theMessageAttachment as string)
if theRecipient is not equal to "" then
tell application "Mail"
activate
set theMessage to make new outgoing message with properties {visible:true, subject:theMessageSubject, content:theMessageContent & linefeed & linefeed}
tell theMessage
make new to recipient at end of to recipients with properties {address:theRecipient}
end tell
tell content of theMessage
make new attachment with properties {file name:theMessageAttachment} at after last paragraph
end tell
set i to i + 1
-- delay 2
-- send theMessage
end tell
else
set i to i + 1
end if
end repeat
end run
Beachten Sie, dass wie kodiert, wenn eine Datei im Zielordner abgelegt wird, der Ordner, an den die Ordneraktion angehängt ist, nicht der Namenskonvention von zB name@client.com_2847.jpg entspricht , dann sollte keine E-Mail für diese Datei erstellt werden , es sei denn, der Teil des Dateinamens vor dem Unterstrich enthält das @-Symbol und andere Zeichen. Mit anderen Worten, der einzige Fehler beim Überprüfen des Codes, wie er ist, versucht zu validieren, ist, dass der Dateiname eine gültige E-Mail-Adresse nur unter der Prämisse enthält, wenn er sowohl einen Unterstrich als auch ein @-Symbol enthält, dann wird angenommen, dass der Dateiname z. B. name@client entspricht .com_2847.jpg . Eine strengere Fehlerprüfung könnte codiert werden, aber das überlasse ich Ihnen, wenn das Dargestellte nicht ausreicht.
Darüber hinaus könnten andere Formen der allgemeinen Fehlerprüfung implementiert werden, dh sicherstellen, dass die Datei vor dem Senden tatsächlich angehängt wurde usw. Diese Antwort soll jedoch ein einfaches Beispiel sein, nicht unbedingt eine vollständig codierte Lösung. Es liegt an Ihnen, sicherzustellen, dass Sie eine angemessene Fehlerprüfung implementieren, wenn die Bedingungen dies rechtfertigen.
Wie Sie vielleicht anhand der folgenden Bilder erkennen können, habe ich dies in einer Umgebung vor OS X 10.9 geschrieben und getestet, genauer gesagt in OS X 10.8.6, und ich habe in den Einstellungen für die Barrierefreiheit "Zugriff für Hilfsgeräte aktivieren" aktiviert . In OS X 10.9 und höher, einschließlich der neuesten Version von macOS, Sierra, müssen Sie möglicherweise Mail und/oder Automator zu Systemeinstellungen > Sicherheit & Datenschutz > Datenschutz > Eingabehilfen hinzufügen , damit die Ordneraktion funktioniert. Ich bin derzeit nicht in der Lage, diese Versionen zu testen, aber wenn es bei Ihnen nicht funktioniert, fügen Sie diese Apps entsprechend hinzu.
Ebene42