• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Antworten mit Mail

Atelis

Akerö
Registriert
01.03.07
Beiträge
1.835
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...
 
dann lass das doch mal per display dialog ausgeben
oder lass den error in ein file schreiben
 
dann lass das doch mal per display dialog ausgeben
oder lass den error in ein file schreiben

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.
 
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?
 
Kann es sein, daß Du Deine Mail einfach nur weiterleiten willst? Dafür gibt es doch "forward".
 
Kann es sein, daß Du Deine Mail einfach nur weiterleiten willst? Dafür gibt es doch "forward".

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...
 
nein, wie das script eigentlich schon deutlich macht,
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.
 
(wobei ich theAttachement fix als String definiert hatte).

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...
 
Zuletzt bearbeitet:
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 <[email protected]>: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?