ich bin am verzweifeln. das script "sendMail" funktioniert alleine wunderbar, allerdings nicht mehr im zusammenhang mit der regel, die oben überprüft wird... das script bricht dann bei "set newMessage to make new outgoing message with properties ... " (in sendMail) ab. sieht jemand den fehler? Code: using terms from application "Mail" on perform mail action with messages theMessages for rule theRule tell application "Mail" set numberOfMessages to count theMessages repeat with thisMessage in theMessages set theSubject to subject of thisMessage set theSender to sender of thisMessage try [hier werden ein paar anhänge verschoben und kopiert] my sendMail(theSender, "erfolgreich", nameOfAttachment) on error my sendMail(theSender, "fehlgeschlagen", nameOfAttachment) end try end repeat end tell end perform mail action with messages end using terms from on sendMail(theSender, theStatus, theAttachment) tell application "Mail" set newMessage to make new outgoing message with properties {subject:theStatus, content:"Datei: " & theAttachment} tell newMessage set visible to false make new to recipient at end of to recipients with properties {address:theSender} send end tell end tell end sendMail
wie wird denn nameOfAttachment übergeben? der teil, den du weggelassen hast. mit ... Code: file name of attachment ? was für ein fehler kommt denn?
mit "set nameOfAttachment to the name of the first mail attachment of thisMessage" fehler kommt keiner, weil ich es als regel in mail einbinde. es wird einfach keine mail verschickt - die dateiverschiebungen werden allerdings korrekt und vollständig gemacht...
mach ich das nicht mit Code: try ... on error errMsg number errNr display dialog "ERROR! " & errMsg & "(" & errNr & ")" buttons {OK} default button 1 end try ? bringt nämlich genauso keine ausgabe...
tut mir leid. ich komm auch nicht dahinter. der wurm liegt im handler, doch selbst wenn man den handler auseinanderdröselt, und direkt (statt handler-aufruf) einsetzt, kommt ein Fehler in der AppleEvent-Routine -10000.
mmh, hab das script mit den apple-vorlagen und scripts aus dem internet zusammengebastelt. hab da noch keine unterschiede entdeckt, aber es muss ja einen geben... wie sieht dein script nach dem "auseinanderdröseln" aus?
nein, wie das script eigentlich schon deutlich macht, soll das script "antworten", ob das verschieben/kopieren erfolgreich war und dementspechend ein "erfolgreich" oder ein "fehlgeschlagen" zurückschicken...
Naja... So ganz deutlich ist es nicht, vorallem, weil Du etwas als Attachment übergibst, das nicht existiert. Vielleicht solltest Du mal das vollständige Script veröffentlichen und zu jeder Zeile hinzuschreiben, was Du meinst, das sie tut.
so, das script soll eine datei bekommen und er soll mir eine antwort schicken, ob er den Dateinamen lesen konnte - das müsste doch auch schon funktionieren? Code: using terms from application "Mail" on perform mail action with messages theMessages for rule theRule tell application "Mail" set numberOfMessages to count theMessages repeat with thisMessage in theMessages set theSender to sender of thisMessage try set nameOfAttachment to the name of the first mail attachment of thisMessage my sendMail(theSender, "Dateiname erfolgreich ausgelesen", nameOfAttachment) on error my sendMail(theSender, "Fehlgeschlagen", nameOfAttachment) end try end repeat end tell end perform mail action with messages end using terms from on sendMail(theSender, theStatus, theAttachment) tell application "Mail" set newMessage to make new outgoing message with properties {subject:theStatus, content:"Dateiname: " & theAttachment} tell newMessage set visible to false make new to recipient at end of to recipients with properties {address:theSender} send end tell end tell end sendMail
ja, klappt aber nicht - das script wird definitiv ausgeführt, aber es wird keine email verschickt... wie könnte ich am besten eine fehlerausgabe machen?
Ich würde eine Kontrollausgabe in eine temporäre Datei schreiben lassen. Ungefähr so: Code: do shell script "(date ; echo " & (quoted form of (theSender & ":" & theStatus & ":" & theAttachment)) & ") >> /tmp/maillog.txt" Das in Deinen Handler eingebaut und dann in der Shell mal nachgesehen, was da so auftaucht.
Also der Fehler lautet: "Fehler in der AppleEvent-Routine -10000" und der passiert in dieser Zeile: Code: set newMessage to make new outgoing message with properties {subject:theStatus, content:"Dateiname: " & theAttachment} (wobei ich theAttachement fix als String definiert hatte). Entweder kam die Fehlermeldung, oder Mail hat komplett "Tschüss" gesagt. Vielleicht ist es "unklug", während des rule-checks gleichzeitig eine Mail generieren zu wollen? Keine Ahnung.
es ist ja auch nur ein string, der übergeben wird... @skeeve: es wird nichts geschrieben - stattdessen habe ich das hier in der system.log gefunden: Code: ... Mail[2003]: *** Assertion failure in -[MailDocumentEditor load], /SourceCache/Mail/Mail-912.1/Compose.subproj/DocumentEditor.m:322 ... Mail[2003]: An exception was thrown during execution of an NSScriptCommand... ... Mail[2003]: load must be called on the main thread mmh, im internet habe ich ähnliche scripte gefunden (im zusammenhang eines automatischen torrent-download-starters), die da angeblich funktionieren (zu zeiten von tiger), bei mir aber ebenfalls nicht klappen. das script...
wenn nichts geschrieben wird, wird der Handler auch nicht aufgerufen. Du hast aber schon in der Datei /tmp/maillog.txt nachgesehen, oder?
so, hab's jetzt: folgendes script: Code: using terms from application "Mail" on perform mail action with messages theMessages for rule theRule tell application "Mail" set numberOfMessages to count theMessages repeat with thisMessage in theMessages set theSender to sender of thisMessage try set nameOfAttachment to the name of the first mail attachment of thisMessage my sendMail(theSender, "Dateiname erfolgreich ausgelesen", nameOfAttachment) on error do shell script "(date ; echo Jetzt geht es schief...) >> maillog.txt" end try end repeat end tell end perform mail action with messages end using terms from on sendMail(theSender, theStatus, theAttachment) do shell script "(date ; echo " & (quoted form of (theSender & ":" & theStatus & ":" & theAttachment)) & ") >> maillog.txt" tell application "Mail" set newMessage to make new outgoing message with properties {subject:theStatus, content:"Dateiname: " & theAttachment} end tell end sendMail ergebnis: Code: Wed Nov 7 22:48:39 CET 2007 Name <meine@email.adresse>:Dateiname erfolgreich ausgelesen:Test.test Wed Nov 7 22:48:39 CET 2007 Jetzt geht es schief... fazit: in der zeile set newMessage to make new outgoing message with properties {subject:theStatus, content:"Dateiname: " & theAttachment} ist etwas falsch, sodass das script an dieser stelle abgebrochen wird... weiß jemand was?