Forenindex » Programmierung/Entwicklung » AppleScript » Ordner überwachen

Ordner überwachen

Anonym
Beiträge gesamt: 22827

31. Mär 2005, 11:22
Bewertung:

gelesen: 25876

Beitrag als Lesezeichen
Guten Tag,
ich habe folgende Vorstellung:
Ein Ordner auf einem Helios Volume wir soll überwacht werden. Sobald in diesem Ordner eine neue Datei "reinfällt", soll diese Datei als Anhang an eine fest vorgegebene Adresse mit einem Mailprogramm verschickt werden.
Ist das technisch mit einem AppleScript umzusetzen?

Grüße
Uwe

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

31. Mär 2005, 13:25
Bewertung:

gelesen: 25868

Beitrag als Lesezeichen
Hallo Uwe,

leider habe ich bisher sämtliche Messages von der "AppleScript User's List",
welche das Thema "Mail" behandelten, ungelesen gelöscht ...

Ich musste mich zuerst also etwas schlauer machen, als ich es bisher war.
Doch nach kurzer Zeit hatte ich folgende Ordneraktion zusammengestellt und –
zu meiner Überraschung – sie funktionierte auf Anhieb. :-)

Anstelle von "Adressat" muss der Name des Empfängers eingesetzt werden.
Das erste "<abc@def.de>" ist die E-mail-Adresse des Empfängers.
Und "Absender <abc@def.de>" durch die richtige Absenderadresse ersetzen.

Als "Betreff" setzt das Script den Namen der Datei ein.
---
property msgName : "Adressat"
property msgAddress : "<abc@def.de>"
property msgBody : "Hallo!"
property msgSender : "Absender <abc@def.de>"

on adding folder items to thisFolder after receiving fileList
   repeat with aFile in fileList
      set filePath to (aFile as string)
      if not (filePath ends with ":") then
         set aName to name of (info for (file filePath))
         sendFile(aName, aFile)
      end if
   end repeat
end adding folder items to

on sendFile(msgSubject, msgAttachment)
   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 {name:msgName, address:msgAddress}
         tell content
            make new attachment with properties {file name:msgAttachment} at after the last paragraph
         end tell
      end tell
      activate
      save newMessage
      send newMessage
   end tell
end sendFile
---
Wenn "Mail" dabei unsichtbar bleiben sollte, dann kannst Du die Zeile 'set visible to true'
in 'set visible to false' ändern und das 'activate' (am Scriptende) entfernen.

Gruss, Hans

Ordner überwachen

Anonym
Beiträge gesamt: 22827

31. Mär 2005, 14:27
Bewertung:

gelesen: 25868

Beitrag als Lesezeichen
Hallo Hans,
auf Dich ist einfach Verlass. Es funktioniert erstklassig.

Danke
Uwe

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

31. Mär 2005, 14:44
Bewertung:

gelesen: 25868

Beitrag als Lesezeichen
Hallo Uwe,

bitteschön! :-)

Nachzutragen ist noch, dass ich als Grundlage das Mail-Script "Create New Message" von Apple
genommen habe. Ohne diese Vorlage hätte ich noch lange nach der richtigen Syntax suchen müssen.

Gruss, Hans

Ordner überwachen

Anonym
Beiträge gesamt: 22827

1. Apr 2005, 09:37
Bewertung:

gelesen: 25868

Beitrag als Lesezeichen
Hi Hans,
da habe ich die Rechnung ohne den Wirt gemacht. Die Bestandteile, die in den Ordner fallen, habe unter umständen so lange Namen, das der Mac sie nicht erkennt. Die Länge der Namen kann ich nicht ändern; sie werden von einem BDE-System generiert. Ich werde mal nach einer Möglichkeit suchen, es mit einem Windows-System zu erledigen.
Confused. Die Windows Systeme zeigen mir die lnangen Dateinamen an.
Gruß
Uwe :?

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

1. Apr 2005, 09:49
Bewertung:

gelesen: 25868

Beitrag als Lesezeichen
Hallo Uwe,

dann gib doch mal dem Wirt den Tarif durch! ;-) Zu lange Namen machen immer wieder Probleme.
Würdest Du mir bitte gelegentlich per Mail ein paar Muster von diesen zu langen Namen senden?
Und – falls möglich – eine Angabe, wo denn die Grenze liegt (31 Zeichen?).

Gruss, Hans

Ordner überwachen

Anonym
Beiträge gesamt: 22827

2. Jun 2005, 13:16
Bewertung:

gelesen: 25868

Beitrag als Lesezeichen
Hallo Hans,

besteht auf diesem Wege auch die Möglichkeit eine Mail zu versenden, wenn ein Ordner (mit Inhalt) in den zu überwachenden Ordner fällt. Es wird nur eine Benachrichtigung benötigt, kein Attachment.

Grüße
Uwe

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

2. Jun 2005, 14:59
Bewertung:

gelesen: 25868

Beitrag als Lesezeichen
Hallo Uwe,

ja, das ist machbar. Im Script ist schon ein Test eingebaut, welcher feststellt, ob es sich um eine Datei
handelt. Diesen Test kann man mit 'else' ergänzen und einen entsprechenden Handler aufrufen:
---
property msgName : "Adressat"
property msgAddress : "<abc@def.de>"
property msgBody1 : "Datei"
property msgBody2 : "Ordner"
property msgSender : "Absender <abc@def.de>"

on adding folder items to thisFolder after receiving fileList
   repeat with aFile in fileList
      set filePath to (aFile as string)
      if not (filePath ends with ":") then
         set aName to name of (info for (file filePath))
         sendFile(aName, aFile)
      else
         set aName to name of (info for (file filePath))
         sendFile(aName)
      end if
   end repeat
end adding folder items to

on sendFile(msgSubject, msgAttachment)
   tell application "Mail"
      set newMessage to make new outgoing message with properties &not;
         {subject:msgSubject, content:msgBody1 & return & return}
      tell newMessage
         set visible to true
         set sender to msgSender
         make new to recipient at end of to recipients with properties {name:msgName, address:msgAddress}
         tell content
            make new attachment with properties {file name:msgAttachment} at after the last paragraph
         end tell
      end tell
      activate
      save newMessage
      send newMessage
   end tell
end sendFile

on sendMessage(msgSubject)
   tell application "Mail"
      set newMessage to make new outgoing message with properties &not;
         {subject:msgSubject, content:msgBody2 & return & return}
      tell newMessage
         set visible to true
         set sender to msgSender
         make new to recipient at end of to recipients with properties {name:msgName, address:msgAddress}
      end tell
      activate
      save newMessage
      send newMessage
   end tell
end sendMessage

---
Es sollte funktionieren (habe es aber nicht getestet).

Im Moment wird &#150; gleich wie bei der Datei &#150; der Name des Ordners in das Betreff-Feld gesetzt.
Für die Meldung bei den Properties 'msgBody1' und 'msgBody2' die beiden Platzhalter ("Datei", "Ordner")
durch den gewünschten Text ersetzen.

Gruss, Hans

Ordner überwachen

Anonym
Beiträge gesamt: 22827

2. Jun 2005, 15:25
Bewertung:

gelesen: 25868

Beitrag als Lesezeichen
Hallo Hans,

wenn ich einen Ordner kopiere passiert nichts.Bei einzelnen Dateien läuft es wie gewohnt.

Uwe

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

2. Jun 2005, 16:08
Bewertung:

gelesen: 25870

Beitrag als Lesezeichen
Hallo Uwe,

ja, klar. Entschuldige bitte. Ich habe beim Aufruf des zweiten Handlers den Namen
nicht angepasst ('sendMessage' statt 'sendFile'). Hier nochmals die korrigierte Version.
---
on adding folder items to thisFolder after receiving fileList
   repeat with aFile in fileList
      set filePath to (aFile as string)
      if not (filePath ends with ":") then
         set aName to name of (info for (file filePath))
         sendFile(aName, aFile)
      else
         set aName to name of (info for (file filePath))
         sendMessage(aName)
      end if
   end repeat
end adding folder items to
---

Gruss, Hans

Ordner überwachen

Anonym
Beiträge gesamt: 22827

2. Jun 2005, 16:15
Bewertung:

gelesen: 25868

Beitrag als Lesezeichen
Danke Hans,
perfekt wie immer.

Uwe

Ordner überwachen

chewy
Beiträge gesamt: 156

12. Jun 2013, 16:00
Bewertung:

gelesen: 24948

Beitrag als Lesezeichen
Ich muss leider diesen Thread einmal aus der Versenkung holen. Das Script benutze ich schon, um eine Reihe von FTP-Ordnern auf Dateneingang zu überwachen. Wenn eine Datei oder ein Ordner hochgeladen wird gibt es eine Mail an eine zentrale Adresse.

Soweit, so gut. Nun habe ich den Dateinamen als Betreff der Mail, kann ich denn zusätzlich noch den Ordnernamen vom überwachten Ordner anhängen im Betreff?

"Ordner X - Beispieldatei.jpg hochgeladen" für hochgeladene Dateien
"Ordner X - Beispielordner hochgeladen" für hochgeladene Ordner

Und wie würde diese Erweiterung dann aussehen?

Vielen Dank schonmal im Voraus :)

Gruß, Tobias.

Ordner überwachen

RBL
Beiträge gesamt: 5

15. Dez 2016, 07:25
Bewertung:

gelesen: 21537

Beitrag als Lesezeichen
Guten Morgen Hans,
mit viel Freude habe ich gestern diesen genau passenden Script gefunden! Ich habe AppleScript oder ähnliches bisher nicht benutzt... Vielen Dank für dieses Lösung. Damit werden einzelne Mails mit dem richtigen Betreff an den richtigen Empfänger gesendet. Nur - der Anhang fehlt - es sind .pdf.
Jetzt arbeite ich heute unter 10.12.1, vielleicht liegt es daran.
Die Mails gehen aus Mail raus (Outlook funktioniert nicht)
Was muss ich hier ändern? Diese Funktion wäre so wunderbar.
Grüsse, Renate

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

15. Dez 2016, 08:15
Bewertung:

gelesen: 21520

Beitrag als Lesezeichen
Guten Morgen Renate,

herzlich willkommen im AppleScript-Forum auf HDS! :-)

Bitte sehr. Das ist ja ein uraltes Script, welches Du da ausgegraben hast ...

Doch ich verstehe das Problem nicht ganz. Hat es gestern funktioniert (abgesehen vom fehlenden Anhang)? Unter Mac OS X 10.11.x?

Und heute – unter Mac OS X 10.12.1 klappt es nicht mehr?

Hauptsächlich benutze ich 10.9.5 und ab und an 10.10. Aber "El Capitan" und "Sierra" habe ich nicht installiert.

Zudem müsste ich das Script erst mal ausprobieren ...

Gruss, Hans

Ordner überwachen

RBL
Beiträge gesamt: 5

15. Dez 2016, 09:52
Bewertung:

gelesen: 21479

Beitrag als Lesezeichen
Hallo Hans,
und wie froh war ich, das alte Script zu finden. Es funktioniert nämlich, bis auf den fehlenden der Anhang. Und da hoffe ich, dass es einen Weg geben wird.
Kann es sein, dass am Anfang die "property" Attachment beschreiben werden muss? So siehts bei mir aus.

property msgName : "Buchhaltung"
property msgAddress : "<xxx.de>"
property msgBody : "an Collmex"
property msgSender : "me <info@xxx>"

on adding folder items to thisFolder after receiving fileList
repeat with aFile in fileList
set filePath to (aFile as string)
if not (filePath ends with ":") then
set aName to name of (info for (file filePath))
sendFile(aName, aFile)
else
set aName to name of (info for (file filePath))
sendFile(aName)
end if
end repeat
end adding folder items to

on sendFile(msgSubject, msgAttachment)
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 {name:msgName, address:msgAddress}
tell content
make new attachment with properties {file name:msgAttachment} at after the last paragraph
end tell
end tell

activate
save newMessage
send newMessage
end tell
end sendFile

Ich probier hier gerne alles aus.

Gruss, Renate

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

15. Dez 2016, 11:11
Bewertung:

gelesen: 13200

Beitrag als Lesezeichen
Hallo Renate,

war kurz weg, bin jetzt wieder zurück. Und habe Deine Version des Scripts ausprobiert.
Ergebnis: Es funktioniert wie erwartet, das Attachment ist angehängt.

Zu Deiner Frage: Die Variable 'msgAttachment' muss nicht im voraus als Property definiert werden.

Der Pfad der Datei steckt in in 'aFile' und wird dem Handler 'sendFile()' übergeben, wo er der Variablen 'msgAttachment' zugewiesen wird.

Ein paar Fragen:
– Wie ist bei Dir das Ergebnis?
– Wird das E-Mail gesendet?
– Ist der Adressat eingetragen?
– Und der Betreff?
– Und der Mitteilungstext?

Ich werde versuchen, ein Testscript zu schreiben, mit welchem der Ablauf aufgezeichnet wird.

Gruss, Hans

Ordner überwachen

RBL
Beiträge gesamt: 5

15. Dez 2016, 13:17
Bewertung:

gelesen: 13167

Beitrag als Lesezeichen
Vielen Dank, Hans!
Das Mail wird sehr schnell über Mail an den richtigen Empfänger gesendet. Betreff ist der Filename, das ist sehr wichtig und ich wähnte mich schon am Ziel. Auch der Mitteilungstext wird übergeben.
Einzig fehlt der Anhang.
Ich habe im Netz gefunden, dass unter Sierra das Mail ggf. zu schnell verschickt wird, bevor der Anhang dran ist. ? Entschuldige bitte meine laienhafte Ausdrucksweise.

Ich starte das über die Ordneraktion. Files in den Ordner und los. Ohne Anhang.

Danke für die Unterstützung!

Renate

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

15. Dez 2016, 16:28
Bewertung:

gelesen: 13119

Beitrag als Lesezeichen
Hallo Renate,

besten Dank für die präzisen Angaben.

Es könnte sein, dass das Gewicht des Anhangs das Mitsenden verhindert. Für meine ersten Versuche habe ich ein Leichtgewicht-PDF von 11 Kb verwendet. Aber auch mit 1.2 MB und 3.1 MB klappt es. Und sogar mit einer Photoshop-Datei von 14 MB.

Ich habe auch im Internet nachgeforscht, aber nichts richtig Brauchbares gefunden. Ausser – vielleicht – dass einer sein Script zum Laufen gebracht hatte, nachdem er den Pfad zur anzuhängenden Datei explizit als 'alias' definierte.

Doch weil die Objekte in der Schleife schon Aliasse sind, wird das sehr wahrscheinlich nicht helfen.

Versuche es bitte trotzdem mit der folgenden Variante:

Code
property msgName : "Buchhaltung" 
property msgAddress : "<xxx.de>"
property msgBody : "an Collmex"
property msgSender : "me <info@xxx>"

on adding folder items to thisFolder after receiving fileList
repeat with curFile in fileList
set filePath to (curFile as string)
if not (filePath ends with ":") then
set aName to name of (info for (file filePath))
set aFile to curFile as alias
sendFile(aName, aFile)
end if
end repeat
end adding folder items to

on sendFile(msgSubject, msgAttachment)
tell application "Mail"
activate
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 {name:msgName, address:msgAddress}
tell content
make new attachment with properties {file name:msgAttachment} at after the last paragraph
end tell
end tell
delay 1
save newMessage
delay 1
send newMessage
end tell
end sendFile

Zusätzlich habe ich gegen das Ende noch zwei Mal die Zeile delay 1 eingefügt, bevor das E-Mail gesendet wird. Das bedeutet, dass die Ausführung je eine Sekunde angehalten wird um dem Anhängen und Speichern mehr Zeit zu geben.

Zudem habe ich das activate nach oben verschoben, damit Mail früher in den Vordergrund kommt.

Wenn die Mitteilung angezeigt ist (also bevor sie gesendet wird): Siehst Du das angefügte Objekt?

Gruss, Hans

Ordner überwachen

RBL
Beiträge gesamt: 5

15. Dez 2016, 19:08
Bewertung:

gelesen: 13078

Beitrag als Lesezeichen
Das ist so genial! Funktioniert perfekt. Einzelne Mails, richtiger Betreff und jetzt mit Anhang! Vielen Dank, das ist eine echte Erleichterung für mich. Sicher auch für viele andere.
Wir hören uns wieder!

Grüsse, Renate

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

15. Dez 2016, 19:52
Bewertung:

gelesen: 13063

Beitrag als Lesezeichen
Hallo Renate,

ich bedanke mich für Deine positive Rückmeldung.

Hatte befürchtet, dass es nicht klappen wird und aus Verzweiflung beide Abhilfen eingebaut.

Jetzt sollten wir noch wissen, welche davon den Unterschied macht. Oder braucht es doch beide?

Würdest Du bitte zuerst die beiden delay-Zeilen auskommentieren? Dazu ganz einfach zwei Bindestriche davor setzen:

Code
-- delay 1 

So werden diese Befehle nicht ausgeführt.

Falls das Attachment dennoch ankommt, können diese beiden Ausbremser entfernt werden.

Gruss, Hans

Ordner überwachen

RBL
Beiträge gesamt: 5

16. Dez 2016, 09:20
Bewertung:

gelesen: 12928

Beitrag als Lesezeichen
Guten Morgen Hans,
wenn ich beide auskommentiere, fehlt der Anhang wieder. Mit einem Ausbremser funktioniert des Script wieder wie gewünscht. Habs mit großer und kleiner Datei getestet.
Vielen Dank für diesen Service!

Gruss,
Renate

Ordner überwachen

JeT
Beiträge gesamt: 40

11. Jan 2017, 17:26
Bewertung:

gelesen: 12509

Beitrag als Lesezeichen
Hallo zusammen,

besteht denn die Möglichkeit, dass der Mailversand auch im Hintergrund passiert?

Das activate habe ich mal rausgenommen, aber es wird immer noch das "Neue Mail"-Fenster bei einem 2-Monitor-Betrieb (Mail aufm zweiten Monitor) sichtbar.


Dankeschöön.
Jens


Grüße
Jens



Heute ist nicht aller Tage, ich komme wieder, keine Frage!

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2017, 20:44
Bewertung:

gelesen: 12466

Beitrag als Lesezeichen
Hallo Jens,

herzlich willkommen im AppleScript-Forum auf HilfDirSelbst! :-)

Wenn Du nach tell newMessage in der Zeile ...

Code
set visible to true 

... das true durch false ersetzest ...

Code
set visible to false 

... dann sollte die Ausführung im Hintergrund geschehen.

Zum besseren Verständnis: visible = sichtbar, true = wahr, false = nicht wahr.

Gruss, Hans

Ordner überwachen

JeT
Beiträge gesamt: 40

12. Jan 2017, 09:10
Bewertung:

gelesen: 12380

Beitrag als Lesezeichen
Hallo Hans,

super – vielen Dank!

Jetzt sind mir in der Anwendung noch ein paar Fragen gekommen :)

1) ich wende das Script auf ein Ordner an, der auf einer smb-Freigabe liegt. Jetzt hatte ich nach einem Neustart die Situation, dass ich 10 Mails bekommen habe, sprich von allen Dateien, die im Ordner liegen.

2) Kann man das auch auf Ordner erweitern, also wenn ein neuer Ordner reingelegt wird?

3) ich bekomme keine Benachrichtigung über eine neue Mail?

4) kann man die gesendete Mail gleich aus dem Ordner "Gesendet" löschen? Ich hab sie im Posteingang, dann brauch ich sie nicht nochmal doppelt vorhalten


Danke schon für deine Hilfe :)
Jens


Grüße
Jens



Heute ist nicht aller Tage, ich komme wieder, keine Frage!

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

12. Jan 2017, 10:45
Bewertung:

gelesen: 12357

Beitrag als Lesezeichen
Hallo Jens,

bitte sehr. Aber Wünsche hast Du ... :-)

Ich bin unterwegs und kann momentan nichts Brauchbares liefern

Nur dies: Das Problem von Punkt 1 sollte nicht mehr auftreten, wenn der Punkt 4 gelöst ist.

Ich werde voraussichtlich nicht vor Ende Nachmittag versuchen können, das Script zu erweitern.

Gruss, Hans

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

12. Jan 2017, 17:18
Bewertung:

gelesen: 12301

Beitrag als Lesezeichen
Hallo Jens,

das erweiterte Script:

Code
property msgName : "Buchhaltung" 
property msgAddress : "<xxx.de>"
property msgBody : "an Collmex"
property msgSender : "me <info@xxx>"

on adding folder items to thisFolder after receiving fileList
repeat with curFile in fileList
set filePath to (curFile as string)
set aName to name of (info for (file filePath))
set aFile to curFile as alias
sendFile(aName, aFile)
tell application "Finder"
try
delete curFile
end try
end tell
end repeat
end adding folder items to

on sendFile(msgSubject, msgAttachment)
tell application "Mail"
--activate
set newMessage to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return}
tell newMessage
--set visible to true
set visible to false
set sender to msgSender
make new to recipient at end of to recipients with properties {name:msgName, address:msgAddress}
tell content
make new attachment with properties {file name:msgAttachment} at after the last paragraph
end tell
end tell
delay 1
save newMessage
delay 1
send newMessage
end tell
end sendFile

1) Wie schon gesagt, sollte dieses Problem durch Punkt 4 gelöst sein.
2) In der Wiederholschleife ist die Prüfung 'if not (filePath ends with ":") then' entfernt. Somit werden sowohl Dateien als auch Ordner spediert.
3) Das musst Du bei Deiner Mail-App einstellen (Ton abspielen oder Notiz zeigen).
4) Nach jedem Aufruf von 'sendFile' versucht der "Finder", die Datei zu entfernen.

Gruss, Hans

Ordner überwachen

JeT
Beiträge gesamt: 40

12. Jan 2017, 20:44
Bewertung:

gelesen: 12264

Beitrag als Lesezeichen
Hi Hans,

1) Da hatten wir uns leider missverstanden.
Ich möchte nicht die Datei im überwachten Ordner löschen, sondern lediglich die Mail im Postausgang/Gesendete – ich habe die Mail ja schon im Posteingang.

Als Hintergrund: ich nutze dein Skript als Erinnerung/Benachrichtigung, wenn ein Kollege eine Datei da reinschmeißt und ich entsprechend reagieren muss. Deswegen habe ich es schon dahingehend modifiziert, dass kein Anhang mitgesendet wird, brauche ich in meinem Anwendungsfall nicht und es geht hier teilweise um 70-80 MB große Bilddateien. Wenn die Datei abgearbeitet ist, lösche ich die Erinnerungsmail.

2) Teste ich dann morgen auf der Arbeit

3) Habe ich schon ausprobiert, ich habe auch extra zusätzlich noch eine Regel gesetzt, die bei der eingehenden Mail entsprechend die Benachrichtigung über neue Mails auswirft, aber hat nicht geklappt. Ich probiers aber morgen nochmal, vielleicht habe ich was übersehen.

4) Besteht wieder, wegen 1 :)


Grüße
Jens


Grüße
Jens



Heute ist nicht aller Tage, ich komme wieder, keine Frage!

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

12. Jan 2017, 23:18
Bewertung:

gelesen: 12221

Beitrag als Lesezeichen
Hallo Sven,

ein neuer Versuch. Die Dateien werden nicht mehr in den Papierkorb verschoben sondern in den Ordner "Backup".
Dieser Ordner wird im Hauptordner, in welchem sich der überwachte Ordner befindet, erzeugt.

Code
property msgName : "Buchhaltung" 
property msgAddress : "<xxx.de>"
property msgBody : "an Collmex"
property msgSender : "me <info@xxx>"

on adding folder items to thisFolder after receiving fileList
tell application "Finder"
set mainFolder to (container of thisFolder) as Unicode text
set backUpFolder to mainFolder & "Backup:"
if not (folder backUpFolder exists) then
make new folder at folder mainFolder with properties {name:"Backup"}
end if
end tell
repeat with curFile in fileList
set filePath to (curFile as string)
set aName to name of (info for (file filePath))
set aFile to curFile as alias
sendFile(aName, aFile)
tell application "Finder"
try
move curFile to backUpFolder with replacing
end try
end tell
end repeat
end adding folder items to

on sendFile(msgSubject, msgAttachment)
tell application "Mail"
--activate
set newMessage to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return}
tell newMessage
--set visible to true
set visible to false
set sender to msgSender
make new to recipient at end of to recipients with properties {name:msgName, address:msgAddress}
tell content
make new attachment with properties {file name:msgAttachment} at after the last paragraph
end tell
end tell
delay 1
save newMessage
delay 1
send newMessage
end tell
end sendFile

Das Entfernen der gesendeten Mitteilungen wollte nicht gelingen. Vielleicht hat ein Mitleser, welcher sich mit dem Scripten von "Mail" besser auskennt, eine Lösung.

Gruss, Hans

Ordner überwachen

JeT
Beiträge gesamt: 40

13. Jan 2017, 09:16
Bewertung:

gelesen: 12127

Beitrag als Lesezeichen
Hi Hans,

ich habs jetzt mal getestet:

– mit Dateien & Ordnern funktioniert

– Mail-Benachrichtigungen: da scheint irgendwie die "Mitteilung senden"-Funktion nicht richtig zu funktionieren, andere werden korrekt angewendet. Kann man vielleicht über das Skript eine Benachrichtigung ausgeben? (ich meine die rechts oben eingeblendet werden) Muss ja nicht sekundengenau mit Mailempfang sein.

– das mit der Mail löschen kriege ich vielleicht sogar mit einer Mail-Regel hin, das probiere ich mal

– das mit dem Backup-Ordner ist wahrscheinlich ein Workaround für den erneuten Mailversand bei Neustart/neu mounten, oder? Die Tatsache, dass der Ordner außerhalb des überwachten Ordner liegt, gefällt mir nicht.
Wie gesagt, die Dateien/Ordner sollen eigentlich genau da bleiben, wo sie sind, ich versende sie nicht als Mailanhang (habe die 3 Zeilen tell content... auskommentiert).
Aber vielleicht ist hier die Grenze des Machbaren? Du musst dich nicht verrenken mit meinem Sonderwünschen :)


Danke nochmal bis hierhin für deine Hilfe!
Jens


Grüße
Jens



Heute ist nicht aller Tage, ich komme wieder, keine Frage!

(Dieser Beitrag wurde von JeT am 13. Jan 2017, 09:18 geändert)

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

13. Jan 2017, 10:18
Bewertung:

gelesen: 12111

Beitrag als Lesezeichen
Hallo Jens,

ach sooo ... Ich hatte verstanden, dass die Dateien als Attachment gesendet werden und dass der überwachte Ordner geleert werden soll.

Weil kein Anhang, sollte das Script angepasst werden: 'sendMsg' (statt 'sendFile') usw.

Code
property msgName : "Buchhaltung" 
property msgAddress : "<xxx.de>"
property msgBody : "an Collmex"
property msgSender : "me <info@xxx>"

on adding folder items to thisFolder after receiving fileList
repeat with curFile in fileList
set filePath to (curFile as string)
set aName to name of (info for (file filePath))
sendMsg(aName)
end repeat
end adding folder items to

on sendMsg(msgSubject)
tell application "Mail"
--activate
set newMessage to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return}
tell newMessage
--set visible to true
set visible to false
set sender to msgSender
make new to recipient at end of to recipients with properties {name:msgName, address:msgAddress}
end tell
save newMessage
send newMessage
end tell
display notification "Neues E-Mail." with title "Hallo Jens!"
end sendMsg

Die Benachrichtigung sollte oben rechts erscheinen.

Gruss, Hans

Ordner überwachen

JeT
Beiträge gesamt: 40

13. Jan 2017, 13:19
Bewertung:

gelesen: 10170

Beitrag als Lesezeichen
Hi Hans

top!

Es ploppt aber irgendwie kurz wieder das "Neue Mail"-Fenster auf – vielleicht habe ich was kaputt gepfuscht (s. u)?

Wie kriege ich denn nur den Namen des überwachten Ordner aus dem Pfad?

Habe schonmal ein bisschen rumprobiert, daran scheiterts aber:

Code
on adding folder items to thisFolder after receiving fileList 
repeat with curFile in fileList
set filePath to (curFile as string)
set aName to name of (info for (file filePath))
sendMsg(aName, thisFolder)
end repeat
end adding folder items to

on sendMsg(msgSubject, thisFolder)
set folderPath to POSIX path of (thisFolder)
tell application "Mail"
set newMessage to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return & folderPath & return & return}
tell newMessage
set visible to false
set sender to msgSender
make new to recipient at end of to recipients with properties {name:msgName, address:msgAddress}
end tell
save newMessage
send newMessage
end tell
display notification msgSubject with title "Ordnerüberwachung // Neue Datei"



Dankeschön
Jens


Grüße
Jens



Heute ist nicht aller Tage, ich komme wieder, keine Frage!

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

13. Jan 2017, 16:46
Bewertung:

gelesen: 10141

Beitrag als Lesezeichen
Hallo Jens,

das Aufploppen des neuen Mailfensters kann ich nicht nachvollziehen.

Um den Namen des überwachten Ordners zu bekommen, muss dessen Pfad nicht festgestellt werden. Denn dieser steckt in 'thisFolder'.

Es reicht, den "Finder" zu bitten, den Namen des Kerls herauszurücken. Am besten gleich zu Beginn des 'on adding folder items'-Abschnitts.

Code
on adding folder items to thisFolder after receiving fileList 
tell application "Finder"
set folderName to name of thisFolder
end tell
repeat with curFile in fileList
tell application "Finder"
set fileName to name of curFile
end tell
sendMsg(fileName, folderName)
end repeat
end adding folder items to

on sendMsg(msgSubject, folderName)
tell application "Mail"
set newMessage to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return & folderName & return & return}
tell newMessage
set visible to false
set sender to msgSender
make new to recipient at end of to recipients with properties {name:msgName, address:msgAddress}
end tell
save newMessage
send newMessage
end tell
display notification msgSubject with title "Ordnerüberwachung // Neue Datei"
end sendMsg

Das Speichern des Dateinamens geschieht jetzt auch mit dem "Finder". Das bisher verwendete 'info for' wird als deprecated bezeichnet (= veraltet).
Der zweite Beitrag dieses Themas ist von Ende März 2005. Und am Ende ist auch der Tipp zum Unsichtbarmachen: http://www.hilfdirselbst.ch/..._P419434.html#419434

Übrigens: In den Mail.app-Voreinstellungen kann definiert werden, dass bei eingehenden Mails ein Ton gespielt wird.
Alternative: Die Benachrichtigungs-Zeile ergänzen mit sound name "Xxx"

Code
  display notification msgSubject with title "Ordnerüberwachung // Neue Datei" sound name "Purr" 

Gruss, Hans

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

13. Jan 2017, 22:53
Bewertung:

gelesen: 10097

Beitrag als Lesezeichen
Hallo Jens,

bei mir werden so die gesendeten Mitteilungen entfernt.
Einzufügen (wie gezeigt) zwischen end repeat und der Zeile end adding folder items to

Code
  end repeat 
delay 1
tell application "Mail"
delete every message of mailbox "Sent Messages" of account "Xyz"
end tell
end adding folder items to

Das "Xyz" durch den Namen Deines Accounts ersetzen. Die Pause mit delay 1 ist notwendig, damit es klappt.

Gruss, Hans

Ordner überwachen

JeT
Beiträge gesamt: 40

16. Jan 2017, 10:18
Bewertung:

gelesen: 9993

Beitrag als Lesezeichen
Hi Hans,


das mit dem Ordnername funktioniert, einen Sound möchte ich gar nicht, nur die eingeschobene Benachrichtigung, aber das funktioniert ja jetzt auch.

set visible to false habe ich ja... keine Ahnung warum man das Fenster dann noch sieht.

Deine Zeilen zum Mail löschen schauen mir danach aus, als ob er meinen Gesendet Ordner komplett leert – das möchte ich ja auf keinen Fall?


Grüße
Jens


Grüße
Jens



Heute ist nicht aller Tage, ich komme wieder, keine Frage!

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

16. Jan 2017, 11:02
Bewertung:

gelesen: 9982

Beitrag als Lesezeichen
Hallo Jens,

dann versuchen wir es mal so:

Code
on adding folder items to thisFolder after receiving fileList 
tell application "Finder"
set folderName to name of thisFolder
end tell
repeat with curFile in fileList
tell application "Finder"
set fileName to name of curFile
end tell
sendMsg(fileName, folderName)
end repeat
end adding folder items to

on sendMsg(msgSubject, folderName)
tell application "Mail"
set newMessage to make new outgoing message with properties ¬
{subject:msgSubject, content:msgBody & return & return & folderName & return & return}
tell newMessage
set visible to false
set sender to msgSender
make new to recipient at end of to recipients with properties {name:msgName, address:msgAddress}
end tell
save newMessage
send newMessage
delay 1
set allMsg to messages of mailbox "Sent Messages" of account "Xyz"
delete item 1 of allMsg
end tell
display notification msgSubject with title "Ordnerüberwachung // Neue Datei" sound name "Purr"
end sendMsg

Wenn die aktuelle Mitteilung gesendet ist:
– Eine Pause von einer Sekunde einlegen;
– eine Liste der gesendeten Mitteilungen erzeugen;
– das erste Element dieser Liste entfernen.

Hier klappt es. Und bei Dir?

Gruss, Hans

Ordner überwachen

JeT
Beiträge gesamt: 40

16. Jan 2017, 11:40
Bewertung:

gelesen: 9970

Beitrag als Lesezeichen
Hi Hans,

klappt leider noch nicht ganz – der Name ist so wie er unter Beschreibung in der Account-Liste eingegeben ist, oder?

Das ganze ist ein IMAP-Account, liegts vielleicht daran?


Grüße
Jens


Grüße
Jens



Heute ist nicht aller Tage, ich komme wieder, keine Frage!

Ordner überwachen

Hans Haesler
  
Beiträge gesamt: 5826

16. Jan 2017, 12:24
Bewertung:

gelesen: 9953

Beitrag als Lesezeichen
Hallo Jens,

im Prinzip ja. Von wegen IMAP: keine Ahnung, ob das einen Unterschied macht. :-( Zudem bin ich gerade unterwegs und kann nicht nachforschen. Vielleicht heute Abend.

Gruss, Hans