[GastForen Programmierung/Entwicklung AppleScript automatischer mail-Versand an e-mail-adresse im PDF

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

automatischer mail-Versand an e-mail-adresse im PDF

Farbenhuhn
Beiträge gesamt: 173

20. Okt 2010, 16:03
Beitrag # 1 von 17
Bewertung:
(15545 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

unter diesem Beitrag hat mir "Hans" freundlicherweise ein Script geschrieben, welches ich für ein Buchprojekt verwenden kann: http://www.hilfdirselbst.ch/...i?post=454588#454588

Im zweiten Teil soll es per Applescript möglich sein, aus einer PDF-Datei einen platzierten Text in Form eines Tags wie z.B. "<e-mail>name@domain.de<e-mail>" automatisch auszulesen und eine e-mail an die ausgelesene Adresse zu senden. Das betreffende PDF soll dann der e-mail als Anhang angefügt werden. Es werden mehr als 100 einzelne PDFs sein, so dass eine automatische Lösung toll wäre. Hat jemand so ein Script oder kann so eines erstellen?

Wie würde bei einer automatischen Applescript-Lösung die Betreffzeile und der e-mail-Text ausgewählt werden? Mir würden für alle e-mails die gleiche Betreffzeile und der gleiche Text ausreichen, d.h. es muß nicht individuell unterschieden werden.
X

automatischer mail-Versand an e-mail-adresse im PDF

Hans Haesler
  
Beiträge gesamt: 5822

23. Okt 2010, 23:09
Beitrag # 2 von 17
Beitrag ID: #454972
Bewertung:
(15481 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Farbenhuhn,

ich bin heute aus dem Urlaub zurückgekehrt, deshalb die verspätete Antwort.

Mit folgender Lösung ist es möglich, die E-Mail-Adresse aus einer PDF-Datei herauszulösen, die E-Mail-Mitteilung vorzubereiten, die PDF-Datei als Attachment anzuhängen und das Ganze zu senden.

Es können mehrere PDF-Dateien gleichzeitig oder Ordner, welche die PDF-Dateien enthalten gedroppt werden.

Beim untenstehenden Code die ersten drei Zeilen anpassen (Betreff, E-Mail-Text, Absender). Dann als Programm (= Droplet) sichern und eine Test-PDF-Datei auf das Icon des Droplets ziehen.

Damit die Ausführung klappt, muss aber die Scripting Addition "Satimage.osax" installiert werden. Und das Programm "Skim" muss ebenfalls vorhanden sein.

Satimage: http://www.satimage.fr/...ompanion_osaxen.html
Skim: http://skim-app.sourceforge.net/

Code
property msgSubject : "Korrekturlesen" 
property msgBody : "Hallo!"
property msgSender : "Absender <abc@def.de>"

-- der 'open handler', welcher auf das Fallenlassen von Objekten reagiert
on open allObjects
-- Wiederholschleife, welche alle gedroppten Objekte zum Handler 'processObject' schickt
repeat with aObject in allObjects
processObject(aObject)
end repeat
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 2
end open

on processObject(aObject)
-- wenn der Pfad mit einem Doppelpunkt endet, ist das Objekt ein Ordner
if (aObject as Unicode text) ends with ":" then
-- ein Ordner wird geöffnet, damit man sieht, dass etwas geschieht
tell application "Finder" to open folder aObject
-- die Liste der Objekte wird erstellt (ohne unsichtbare Dateien)
set contentsList to list folder aObject without invisibles
-- dies ist das rekursive Teil: die Wiederholschleife schickt alle Objekte
-- zum Handler, in welchem sie sich selbst befindet
repeat with anItem in contentsList
set objPath to ((aObject as Unicode text) & anItem)
processObject(objPath as alias)
end repeat
-- den Ordner wieder schliessen
tell application "Finder" to close folder aObject
else
processFile(aObject)
end if
end processObject

-- in diesem Handler wird die aktuelle Datei behandelt
on processFile(aObject)
set filePath to aObject as Unicode text
-- das Suffix prüfen ...
if filePath ends with ".pdf" then
-- wenn ".pdf" mit "Skim" den Text ausziehen
tell application "Skim"
open filePath
set allText to (get text for document 1) as text
close document 1
end tell
-- die E-Mail-Adresse ausziehen
try
set msgAddress to find text "(<e-mail>)(.*)(<e-mail>)" in allText using "\\2" with regexp and string result
on error
return
end try
-- die Meldung vorbereiten und senden
tell application "Mail"
set newMessage to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return}
tell newMessage
set visible to true
set sender to msgSender
make new to recipient at end of to recipients with properties {address:msgAddress}
tell content
make new attachment with properties {file name:filePath as alias} at after the last paragraph
end tell
end tell
activate
try
save newMessage
send newMessage
end try
end tell
end if
end processFile

Hier funktioniert es. Und bei Dir?

Gruss, Hans


als Antwort auf: [#454671]

automatischer mail-Versand an e-mail-adresse im PDF

Farbenhuhn
Beiträge gesamt: 173

25. Okt 2010, 20:20
Beitrag # 3 von 17
Beitrag ID: #455102
Bewertung:
(15440 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Hans,

ich weiß jetzt ehrlich gesagt gar nicht, was ich schreiben soll. Ich bin wirklich total überwältigt von Deiner Arbeit. Ich bestätige gerne die Funktionsweise des Scripts. Ich muß zwar gestehen, dass ich teilweise nicht wirklich weiß, was ich da gemacht oder installiert habe, aber es funktioniert.

Ganz herzlichen und lieben Dank dafür. Du hast mir wirklich sehr geholfen und gaaaaaaanz viel manuelle Arbeit abgenommen.

Bist du denn auch der "Hans" aus meinem Beitrag im InDesign-Forum? Die beiden nicks sind unterschiedlich, daher die Frage. Wenn ja, hätte ich evtl. noch eine letzte Frage. Könnte man die Scripte auch als Ordneraktionen verwenden? Es wäre ja noch einfacher, wenn man die einzelnen PDFs aus Acrobat in einen bestimmten Ordner sichern würde, an dem per Ordneraktion das Script "Codierung" hängt. Und die dann umbenannten PDFs im Ordner "Codierte_PDF" könnte man ja ebenfalls per Ordneraktion mit dem Script "Mailversand" automatisch versenden lassen. Mein Problem ist, dass ich nur von den Ordneraktionen gelesen habe, aber noch keine erstellt habe. Mein alter PowerMac würde sich aber bestimmt über diese Arbeit freuen.

Nochmals vielen lieben Dank, du hast mir sehr geholfen.


als Antwort auf: [#454972]

automatischer mail-Versand an e-mail-adresse im PDF

Hans Haesler
  
Beiträge gesamt: 5822

25. Okt 2010, 21:35
Beitrag # 4 von 17
Beitrag ID: #455106
Bewertung:
(15420 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebes Farbenhuhn,

bitteschön. Ich bedanke mich für die Rückmeldung. Super, dass es auf Anhieb geklappt hat.

Nein, jener "Hans" ist ein anderer. Ab und an zeichnet er mit vollem Vornamen: Hans-Gerd :-)

Das Script zur Ordneraktion umzufunktionieren ist möglich. Doch solch ein Einsatz ist nicht ratsam. Zu häufig sind Berichte von Ordneraktionen, welche urplötzlich nicht mehr funktionieren.

Aber bitte: Ich will Dir nicht vor dem Glück stehen und werde im Laufe des Abends versuchen, die Anpassung vorzunehmen.

Gruss, Hans


als Antwort auf: [#455102]

automatischer mail-Versand an e-mail-adresse im PDF

Hans Haesler
  
Beiträge gesamt: 5822

25. Okt 2010, 22:16
Beitrag # 5 von 17
Beitrag ID: #455116
Bewertung:
(15408 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Farbenhuhn,

so. Ich nehme an, dass Du weisst, wie vorgehen, um ein Ordneraktions-Script an einen Hotfolder zu hängen.

Code
property msgSubject : "Korrekturlesen" 
property msgBody : "Hallo!"
property msgSender : "Absender <abc@def.de>"

on adding folder items to sourceFolder after receiving itemList
repeat with aFile in itemList
set filePath to aFile as string
-- das Suffix prüfen ...
if (filePath ends with ".pdf") then
processFile(filePath)
end if
end repeat
end adding folder items to

-- in diesem Handler wird die aktuelle Datei behandelt
on processFile(filePath)
-- mit "Skim" den Text ausziehen
tell application "Skim"
open filePath
set allText to (get text for document 1) as text
close document 1
end tell
-- die E-Mail-Adresse ausziehen
try
set msgAddress to find text "(<e-mail>)(.*)(<e-mail>)" in allText using "\\2" with regexp and string result
on error
return
end try
-- die Meldung vorbereiten und senden
tell application "Mail"
set newMessage to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return}
tell newMessage
set visible to true
set sender to msgSender
make new to recipient at end of to recipients with properties {address:msgAddress}
tell content
make new attachment with properties {file name:filePath as alias} at after the last paragraph
end tell
end tell
activate
try
save newMessage
send newMessage
end try
end tell
end processFile

Hier funktioniert es. Und bei Dir?

Gruss, Hans


als Antwort auf: [#455106]

automatischer mail-Versand an e-mail-adresse im PDF

Farbenhuhn
Beiträge gesamt: 173

26. Okt 2010, 20:20
Beitrag # 6 von 17
Beitrag ID: #455249
Bewertung:
(15357 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

nach einigen Fehlversuchen ist es mir gelungen das Script als Ordneraktion ausführbar zu machen. Muss das Script explizit im Ordner "Folder Action Scripts" liegen? Vom Desktop aus hat es leider irgendwie nicht funktioniert. Ich gebe aber gerne zu, dass ich das vorher auch noch nie gemacht habe und mich erst per Google durchsuchen musste, da die Apple-Hilfe dazu leider auch nichts parat hat.

Eigentlich ist mir Deine Warnung aus dem vorherigen Beitrag aber auch deutlich genug. Ich vertraue da voll und ganz dem Profi. Das normale Script reicht mir völlig aus und ist vielleicht sogar auch besser mit der direkten Rückmeldung. Ich wollte Dir jetzt aber auf jeden Fall nochmals eine Rückmeldung geben nachdem Du da nochmals Zeit investiert hast. Auch wenn ich es also gar nicht brauche, so denke ich, dass sich das so gehört der Fairneß halber.

Wenn ich noch zwei Fragen zu dem ersten Script stellen dürfte. Den e-mail-Text kann ich ja beliebig anpassen, das habe ich getestet. Auch Leerzeilen für einen besseren Umbruch funktionieren. Könnte man denn auch einen Hyperlink für die Homepage dort einfügen, ähnlich wie ich das in der normalen e-mail-Signatur habe? Wie müsste man das schreiben als z.B. http://www.hilfdirselbst.ch? Ein HTML-Tag wie auf dieser Webseite im Safari-Quelltext funktioniert scheinbar nicht, da die Anführungszeichen schon verwendet werden für den eigentlichen Text:
Code
<a href="http://www.hilfdirselbst.ch" target="_blank">http://www.hilfdirselbst.ch</a> 


Und dann habe ich im Script in der dritten Zeile gelesen, dass das wohl die Absenderadresse sein muß.
Code
property msgSender : "Absender <abc@def.de>" 

Ist das rot markierte eine Variable? Tut mir leid, ich kann das leider im Script nicht identifizieren, da ich nicht programmieren kann. Denn in der gesendeten e-mail steht meine korrekte Absenderadresse. Das funktioniert also grundsätzlich. Kunden wäre aber keine Kunden wenn sie einfach wären. Ich wurde gefragt, ob man nicht als Absenderadresse auch die adresse des Kunden verwenden könnte, falls auf die e-mails geantwortet würde, dann würde das direkt beim Kunden ankommen. Ich weiß, dass wir unsere e-mail-newsletter so versenden. Allerdings macht das eine befreundete Internetagentur für uns und ich weiß nicht wie. Die tragen da im newsletter unsere e-mail-adresse als Absender ein, versenden das aber von sich aus der Agentur heraus. Scheinbar muß es wohl einen Weg geben, der einer gesendeten e-mail einen "falschen" Absender vorgaukelt. Könnte ich am Mac in meiem mail-Programm auch so etwas realisieren? Was müsste man da im Script eintragen?

Ich möchte Dich aber nicht über Gebühr strapazieren. Wenn es nicht möglich ist, dann eben nicht. Aber vielleicht kannst du die Frage beantworten. Danke.


als Antwort auf: [#455116]

automatischer mail-Versand an e-mail-adresse im PDF

Hans Haesler
  
Beiträge gesamt: 5822

26. Okt 2010, 21:17
Beitrag # 7 von 17
Beitrag ID: #455268
Bewertung:
(15345 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Farbenhuhn,

sorry. Ich hatte zwar verstanden, dass Du Dich nicht mit dem Schreiben von Ordneraktionen auskennst. Aber vermutete, dass Dir das Anhängen geläufig ist.

Ja, das Script muss im Ordner "Folder Action Scripts" liegen. Aber diese Information hättest Du sofort bekommen: Eine Frage hier, oder eine PM an mich.

Okay, denn: Zurück zum Droplet. Das ist zwar etwas weniger automatisch. Doch viel zuverlässiger als eine Ordneraktion.

Einen Hyperlink kann man ganz ohne Formatierung einfügen:

Code
property msgBody : "Und hier ist der Link: http://www.hilfdirselbst.ch" 

Das wird beim Empfänger als funktionierender Link ankommen.

Bei der Absenderzeile ist das Wort msgSender die Variable. Was Du rot ausgezeichnet hast, ist der Inhalt der Variablen. Die Idee war, dass vor dem Ausführen des Scripts der Platzhaltertext durch die aktuelle Adresse ersetzt wird. Ist aber offensichtlich nicht notwendig, weil die Mail.app beim Erzeugen der Mitteilung automatisch die Absender-Adresse des eingeloggten Benutzers einsetzt.

Das Vorgaukeln eines anderen Absenders scheint so also nicht zu gelingen. Aber ich kenne mich mit dem Scripten von Mail.app nicht richtig aus.

Gruss, Hans


als Antwort auf: [#455249]

automatischer mail-Versand an e-mail-adresse im PDF

Hans Haesler
  
Beiträge gesamt: 5822

27. Okt 2010, 09:44
Beitrag # 8 von 17
Beitrag ID: #455310
Bewertung:
(15314 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Farbenhuhn,

ich habe jetzt hier am Arbeitsplatz rasch drei Versuche gemacht. Jedes Mal mit einem anderen Absender. Bei jeder angekommenen Mitteilung stimmte dieser mit jenem in Zeile 3 definierten überein.

Sogar die nichtexistierende Vorgaben-Adresse "Absender <abc@def.de>". Das bedeutet, dass geschummelt werden kann.

Allerdings benutzte ich dazu die Mail.app-Version 2.1.3 (753.1) unter Mac OS X 10.4.11 ("Tiger"). Kann sein, dass es mit Deiner Leoparden-Version nicht mehr geht.

Gruss, Hans


als Antwort auf: [#455268]

automatischer mail-Versand an e-mail-adresse im PDF

Farbenhuhn
Beiträge gesamt: 173

27. Okt 2010, 17:41
Beitrag # 9 von 17
Beitrag ID: #455386
Bewertung:
(15283 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

tut mir leid, dass ich so viele Umstände mache. Den Hyperlink konnte ich problemlos einfügen und das wird ja von mail auch automatisch umgesetzt. Immer wieder faszinierend wie einfach so etwas auf dem Mac ist.

Bei der Absenderadresse muß ich Dich aber noch einmal um Hilfe fragen. Ich habe überhaupt keine Vorstellung wo ich eine gefakte Absenderadresse eintragen soll. Wenn die also z.B. buchkorrektur@kunde.de sein soll. Wie trage ich das in Zeile 3 ein?

Ein e-mail-Programm setzt doch den Absender immer aus zwei Teilen zusammen. Der erste Teil ist mein Name in Klarschrift, was ich in mail eingebe, gefolgt von der echten e-mail-adresse mit dem @-Zeichen. Ich verstehe die doppelten Anführungszeichen ""<> in der Scriptsprache nicht.

Wenn die Absenderzeile im e-mail-Programm des Empfängers also wie folgt aussehen soll, was muss ich dann eintragen:
Mein Name buchkorrektur@kunde.de
Code
property msgSender : "Mein Name <buchkorrektur@kunde.de>" 

(wobei Mein Name natürlich der vom Kunden sein muss)
Wie muss diese Zeile genau formatiert werden? Ein Löschen der eckigen Klammern hat leider nicht funktioniert.


als Antwort auf: [#455310]

automatischer mail-Versand an e-mail-adresse im PDF

Hans Haesler
  
Beiträge gesamt: 5822

27. Okt 2010, 22:10
Beitrag # 10 von 17
Beitrag ID: #455406
Bewertung:
(15261 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mein liebes Farbenhuhn, :-)

Du hast alles richtig gemacht. Die Absender-Adresse muss nicht formatiert werden. Die Vorgabe-Textkette zwischen den Anführungszeichen auf den gewünschten Text ändern. Das ist alles.

Eine kurze Erklärung: Wenn in einem Script gewisse Eingaben von der Anwenderin an ihre Bedürfnisse angepasst werden müssen, dann geschieht das mit Vorteil zu Beginn des Scripts. Und nicht irgendwo in den Tiefen des Codes vergraben.

Aber: Weil ein Droplet zwingend mindestens einen sogenannten "Handler" (die Zeile beginnt mit on) aufweist, müssen die benutzten Variablen entweder als global oder als property definiert sein, damit sie innerhalb dieser Funktion bekannt sind.

Mit global wird die Variable als ... global erklärt. Der Inhalt wird später zugewiesen.

Mit property geschieht beides in derselben Zeile. Der Vorteil von "property": Wenn man den Wert der Variablen während der Ausführung ändert, speichert das Script den aktuellen Wert und bietet ihn bei der nächsten Ausführung wieder an.

Im vorliegenden Droplet wird das Speichern nicht ausgenützt. Das spielt aber keine Rolle.

Die dritte Zeile, welche uns interessiert, beginnt mit property. Dann kommt der Name (eine Etikette) der Variablen: msgSender. In dieses "Gefäss" gibt man den Inhalt, welcher nach dem Doppelpunkt zwischen An- und Abführungszeichen steht.

Ich habe jetzt das Droplet mit Deiner Absenderadresse ...

Code
property msgSender : "Mein Name <buchkorrektur@kunde.de>" 

... versehen und eine PDF-Datei auf das Icon gezogen.

Ergebnis: Das E-Mail wird erzeugt und gesendet. Aber als Absender ist nicht die "falsche" Adresse eingetragen, sondern meine eigene.

Es sieht so aus, als ob die Mail.app (Version 3.6 (936)) von Leopard (Mac OS X 10.5.8) eine solche Schummelei nicht mehr zulässt.

Wenn Du mir Deine E-Mail-Adresse verraten würdest (meine Adresse steht in meinem Profil ...), dann würde ich Dir morgen vom Arbeitsplatz aus (unter "Tiger") als Beweis eine getürkte Meldung zukommen lassen. Wird Dir zwar nicht viel helfen ...

Gruss, Hans


als Antwort auf: [#455386]

automatischer mail-Versand an e-mail-adresse im PDF

Farbenhuhn
Beiträge gesamt: 173

28. Okt 2010, 17:59
Beitrag # 11 von 17
Beitrag ID: #455529
Bewertung:
(15203 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mein lieber Hans, ;-)

du hast ja wirklich eine Engelsgeduld mit mir.

Von dem oberen Teil deiner Antwort habe ich nicht viel verstanden. Aber der letzte Absatz hat mich dazu veranlasst, das Script auf meinem PowerMac mit Tiger zu testen. Bevor ich das machen konnte, musste ich erst einmal die notwendigen Programme in den Vorversionen downloaden, da die aktuellsten Versionen ja alle nur für Leopard geeignet sind. Nachdem ich das geschafft habe, konnte ich es testen und es ist natürlich genau so, wie du beschrieben hast.

In Tiger-mail wird exakt der Absender wie im Script beim Empfänger angezeigt, d.h. eine Fakeadresse ist möglich. In Leopard-mail wird automatisch der aktive mail-account verwendet, d.h. eine Fakeadresse ist somit nicht mehr möglich.

Jetzt würde ich sofort den mailversand mit meinem PowerMac und Tiger machen, wenn da nicht eine winzige Einschränkung wäre. Und ich glaube, ich brauche dazu nochmal Deine Hilfe. Das Leopard-mail hat die versendeten e-mails ganz korrekt im Postfach "Gesendet" abgelegt. So kann man immer ganz genau nachvollziehen, welche PDFs an welchen Empfänger zu welcher Uhrzeit versendet wurden. Das ist bei der Menge der e-mails und der "Schwierigkeit" des Kunden ganz wichtig für mich, damit ich meine Arbeit sauber dokumentieren und nachvollziehen kann. Ich muss mich da einfach absichern.

Und genau das ist das Problem, denn das Tiger-mail versendet zwar die e-mails korrekt, legt diese aber nicht im Postfach "Gesendet" ab. Damit ist eine Nachvollziehbarkeit nicht gewährleistet. Am mail-Programm kann es aber nicht liegen, da manuell versendete e-mails korrekt dort abgelegt werden.

Könnte man als Beweis die e-mail als cc oder noch besser als bcc an sich selbst senden? Dann hätte man ja praktisch jede gesendete e-mail als Kopie vorliegen, in der auch das Absendedatum protokolliert ist. bcc wäre besser, damit man den Empfänger der e-mail nicht unnötig irritiert, wenn da noch eine für ihn fremde Adresse im cc-Feld stehen würde.

Kann man das in das Script noch mit bcc ergänzen? Du würdest mir damit nochmals einen riesigen Gefallen tun. Und wenn alles klappt, verspreche ich auch, ganz lieb und artig zu sein und keine weiteren Fragen mehr zu stellen in einem solchen Umfang.


als Antwort auf: [#455406]

automatischer mail-Versand an e-mail-adresse im PDF

Hans Haesler
  
Beiträge gesamt: 5822

28. Okt 2010, 20:56
Beitrag # 12 von 17
Beitrag ID: #455546
Bewertung: |||
(15182 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Abend Farbenhuhn,

von wegen "Engelsgeduld": Das ist anerzogen (ich bin verheiratet :-).

Das Problem mit dem "spurlosen" Versenden hatte ich schon am Arbeitsplatz bemerkt. Sehr wahrscheinlich hängt es damit zusammen, dass sich die Meldung nicht speichern lässt. Wenn man genau hinschaut, sieht man den Warnungsdialog.

Jetzt habe ich hier ebenfalls die Tiger-Version von "Skim" heruntergeladen und installiert.

Gute Nachricht: Es ist möglich, sowohl eine Cc- als auch eine Bcc-Adresse zu verwenden.

Beim folgenden Script muss in der Zeile 4 eine gültige Bcc-Adresse eingetragen werden. Also Deine Adresse anstelle von "Empfängerin <uvw@xyz.de>".

Zwei weitere Änderungen: Den nichtfunktionierenden Befehl zum Speichern habe ich entfernt. Und am Schluss wird das Droplet mit activate me in den Vordergrund geholt, damit die Meldung "Fertig." auch im Vordergrund sichtbar wird, bevor sie nach zwei Sekunden automatisch verschwindet. Dieser Wert kann bei Bedarf erhöht werden. Dazu muss in der Zeile ...

Code
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 2 

... die Zahl ganz am Schluss (nach giving up after) auf die gewünschte Anzahl Sekunden abgeändert werden.

Code
property msgSubject : "Korrekturlesen" 
property msgBody : "Hallo!"
property msgSender : "Absender <abc@def.de>"
property msgBccAddress : "Empfängerin <uvw@xyz.de>"

-- der 'open handler', welcher auf das Fallenlassen von Objekten reagiert
on open allObjects
-- Wiederholschleife, welche alle gedroppten Objekte zum Handler 'processObject' schickt
repeat with aObject in allObjects
processObject(aObject)
end repeat
activate me
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 2
end open

on processObject(aObject)
-- wenn der Pfad mit einem Doppelpunkt endet, ist das Objekt ein Ordner
if (aObject as Unicode text) ends with ":" then
-- ein Ordner wird geöffnet, damit man sieht, dass etwas geschieht
tell application "Finder" to open folder aObject
-- die Liste der Objekte wird erstellt (ohne unsichtbare Dateien)
set contentsList to list folder aObject without invisibles
-- dies ist das rekursive Teil: die Wiederholschleife schickt alle Objekte
-- zum Handler, in welchem sie sich selbst befindet
repeat with anItem in contentsList
set objPath to ((aObject as Unicode text) & anItem)
processObject(objPath as alias)
end repeat
-- den Ordner wieder schliessen
tell application "Finder" to close folder aObject
else
processFile(aObject)
end if
end processObject

-- in diesem Handler wird die aktuelle Datei behandelt
on processFile(aObject)
set filePath to aObject as Unicode text
-- das Suffix prüfen ...
if filePath ends with ".pdf" then
-- wenn ".pdf" mit "Skim" den Text ausziehen
tell application "Skim"
open filePath
set allText to (get text for document 1) as text
close document 1
end tell
-- die E-Mail-Adresse ausziehen
try
set msgAddress to find text "(<e-mail>)(.*)(<e-mail>)" in allText using "\\2" with regexp and string result
on error
return
end try
-- die Meldung vorbereiten und senden
tell application "Mail"
set newMessage to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return}
tell newMessage
set visible to true
set sender to msgSender
make new to recipient at end of to recipients with properties {address:msgAddress}
make new bcc recipient at end of bcc recipients with properties {address:msgBccAddress}
tell content
make new attachment with properties {file name:filePath as alias} at after the last paragraph
end tell
end tell
activate
try
send newMessage
end try
end tell
end if
end processFile

Aber diese Lösung wird doch Deine Mailbox zumüllen ... Deshalb nachstehend eine Variante, mit welcher eine zweite Mitteilung – aber ohne Attachment – an Deine Adresse geschickt wird. Auch hier in der vierten Zeile Deine Adresse eintippen.

Im E-Mail-Text steht im Moment nur die Empfänger-Adresse der ersten Mitteilung. Kann bei Bedarf mit zusätzlichen Angaben ergänzt werden.

Code
property msgSubject : "Korrekturlesen" 
property msgBody : "Hallo!"
property msgSender : "Absender <abc@def.de>"
property msgAddress2 : "Empfängerin <uvw@xyz.de>"

-- der 'open handler', welcher auf das Fallenlassen von Objekten reagiert
on open allObjects
-- Wiederholschleife, welche alle gedroppten Objekte zum Handler 'processObject' schickt
repeat with aObject in allObjects
processObject(aObject)
end repeat
activate me
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 2
end open

on processObject(aObject)
-- wenn der Pfad mit einem Doppelpunkt endet, ist das Objekt ein Ordner
if (aObject as Unicode text) ends with ":" then
-- ein Ordner wird geöffnet, damit man sieht, dass etwas geschieht
tell application "Finder" to open folder aObject
-- die Liste der Objekte wird erstellt (ohne unsichtbare Dateien)
set contentsList to list folder aObject without invisibles
-- dies ist das rekursive Teil: die Wiederholschleife schickt alle Objekte
-- zum Handler, in welchem sie sich selbst befindet
repeat with anItem in contentsList
set objPath to ((aObject as Unicode text) & anItem)
processObject(objPath as alias)
end repeat
-- den Ordner wieder schliessen
tell application "Finder" to close folder aObject
else
processFile(aObject)
end if
end processObject

-- in diesem Handler wird die aktuelle Datei behandelt
on processFile(aObject)
set filePath to aObject as Unicode text
-- das Suffix prüfen ...
if filePath ends with ".pdf" then
-- wenn ".pdf" mit "Skim" den Text ausziehen
tell application "Skim"
open filePath
set allText to (get text for document 1) as text
close document 1
end tell
-- die E-Mail-Adresse ausziehen
try
set msgAddress1 to find text "(<e-mail>)(.*)(<e-mail>)" in allText using "\\2" with regexp and string result
on error
return
end try
-- die Meldungen vorbereiten und senden
tell application "Mail"
-- erste Meldung
set newMessage1 to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return}
tell newMessage1
set visible to true
set sender to msgSender
make new to recipient at end of to recipients with properties {address:msgAddress1}
tell content
make new attachment with properties {file name:filePath as alias} at after the last paragraph
end tell
end tell
activate
try
send newMessage1
end try
-- Kontroll-Meldung
set newMessage2 to make new outgoing message with properties ¬
{subject:msgSubject, content:msgAddress1 & return}
tell newMessage2
set visible to true
set sender to msgSender
make new to recipient at end of to recipients with properties {address:msgAddress2}
end tell
activate
try
send newMessage2
end try
end tell
end if
end processFile

Hier funktioniert es. Und wie immer gilt: Einsatz auf eigene Verantwortung.

Ach ja: Kein Problem wegen "Fragen in solchem Umfang". Dafür sind wir da. Davon "lebt" das Forum.

Gruss, Hans


als Antwort auf: [#455529]

automatischer mail-Versand an e-mail-adresse im PDF

Farbenhuhn
Beiträge gesamt: 173

1. Nov 2010, 16:28
Beitrag # 13 von 17
Beitrag ID: #455684
Bewertung:
(15089 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

soll ich jetzt schreiben, dass du mein liebster und bester Hans bist? Das würde wahrscheinlich zu weit führen und ich möchte auch keinen Ärger mit Deiner Frau, aber ich bin Dir wirklich unendlich dankbar. Die Variante mit Attachment habe ich erfolgreich getestet mit Mac-OS 10.4 und so werde ich es wohl auch einsetzen. Das klappt mit meinen Test-PDFs wirklich ganz hervorragend. Hoffentlich stürzt er mir bei mehreren e-mail mit größeren Dateianhängen dann in der Praxis nicht ab. Aber dann kann ich es auch immer noch in Etappen versenden. Auf jeden Fall ist das wirklich ein tolle Arbeit von Dir, die mir sicherlich die Aufgabe wesentlich vereinfacht.

Also nochmals danke für Deine Mühe.


als Antwort auf: [#455546]

automatischer mail-Versand an e-mail-adresse im PDF

Hans Haesler
  
Beiträge gesamt: 5822

1. Nov 2010, 17:08
Beitrag # 14 von 17
Beitrag ID: #455689
Bewertung:
(15078 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Farbenhuhn,

keine Sorge, meine Frau hat schon verschiedene Dankbarkeitsbezeugungen gesehen. :-)

Schön, dass es zu funktionieren scheint. Unklar ist, welche Version Du einsetzen wirst.

Das erste Script schickt das PDF als Attachment sowohl an den Adressaten als auch an die Bcc-Adresse.

Das zweite Script schickt das PDF als Attachment an den Adressaten und eine separate Meldung (aber ohne Anhang) an Deine Adresse.

Der Vorteil der zweiten Lösung: Es wird vermieden, dass in Deiner Mailbox die PDF-Dateien unnötig Speicherplatz belegen.

Gruss, Hans


als Antwort auf: [#455684]

automatischer mail-Versand an e-mail-adresse im PDF

Farbenhuhn
Beiträge gesamt: 173

1. Nov 2010, 17:50
Beitrag # 15 von 17
Beitrag ID: #455692
Bewertung:
(15066 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ja, das habe ich schon verstanden. Speicherplatz ist bestimmt kein Problem wenn ich meinen alten PowerMac dafür verwende. Da werde ich ein separates Postfach einrichten und nur das auf dem Rechner verwalten. Meine tägliche Korrespondenz werde ich auf meinem neuen Mac machen, so dass die sich da nicht in die Quere kommen.
Zitat Die Variante mit Attachment habe ich erfolgreich getestet mit Mac-OS 10.4 und so werde ich es wohl auch einsetzen

;-)


als Antwort auf: [#455689]
X