script um mehrere pdfs an serienmails anzuhängen

M

marcomx

Registriert
Thread Starter
Dabei seit
14.01.2010
Beiträge
3
Reaktionspunkte
0
hallo alle,

ich habe folgende situation:
Ich habe einen Ordner mit 99 subfolders. In jedem der subfolder sind 4 pdf Dateien. 3 dieser dateien sind immer gleich, eine ist immer anders.
ich möchte mit Hilfe von "mail" eine serienmail an eine vordefinierte Gruppe senden, die aus 99 adressen besteht. Jede Adresse soll eine personalisierte email mit den entsprechenden Dateien aus dem jeweiligen Ordner bekommen.
Zur Veranschaulichung:
Ich habe Ordner "mailing" mit 99 subfolders ("mailing1; mailing2;mailing3;...). Jeder subfolder enthält 4 Dateien (1.pdf; 2.pdf;...).
Ich habe eine Gruppe "Adressen" in Adress Book die aus 99 Adressen besteht (Adresse1;...Adresse99). Ein Adressfeld ("andere") enthält jeweils die korrekte Ansprache.
Der Inhalt von subfolder "mailing1" soll als Attachment zu einer mail mit persönlicher Ansprache an Adresse1 aus der Gruppe "Adressen" angehangen werden.
Folgendes hab ich per copy und paste und etwas grübeln zusammengestellt:

Code:
[PHP]with timeout of 600 seconds -- kann länger dauern... 
	
	-- Liste 1: Alle attachments 
	
	tell application "Finder"
		set mailing to selection
		set myFolders to every folder of (mailing as alias list)
		set myFiles to every item of myFolders i
	end tell
	
	-- Liste 2: Alle Empfänger  
	
	tell application "Contacts"
		set emailList to {}
		set testPersons to every person of group "Adressen"
		repeat with thisTestPerson in testPersons
			set end of emailList to (value of email of thisTestPerson) as string
		end repeat
	end tell
	
	-- Liste fuer die Übergabe alphabetisch sortieren 
	
	set the_list to emailList
	set otid to AppleScript's text item delimiters
	set AppleScript's text item delimiters to {ASCII character 10} -- always a linefeed 
	set list_string to (the_list as string)
	set new_string to do shell script "echo " & quoted form of list_string & " | sort -f"
	set new_list to (paragraphs of new_string)
	set AppleScript's text item delimiters to otid
	
	-- Sicherheits-Check (you never know...) 
	
	set count1 to count of myFolders
	set count2 to count of new_list
	if count1 is not equal to count2 then
		display dialog "There is a problem:" & return & "Die beiden Listen sind nicht gleich lang..." buttons {"Shit"} with icon 2
		return
	end if
	
	-- Serienmails erstellen und abschicken: 
	
	tell application "Mail"
		activate
		repeat with i from 1 to count1
			set theFiles to every file of (item i of myFolders) as alias
			set theAddress to (item i of emailList)
			set theMex to (make new outgoing message at end of outgoing messages with properties {visible:true, subject:"mailing", content:"Bitte entnehmen Sie dem Anhang ....."})
			tell content of theMex
				make new attachment with properties {file name:theFiles} at after last paragraph
			end tell
			tell theMex
				make new to recipient at end of to recipients with properties {address:theAddress}
			end tell
			send theMex
		end repeat
	end tell
	
	display dialog (count1 as string) & " Nachrichten verschickt."
	
end timeout[/PHP]

Folgende Schritte fehlen noch bzw. funktionieren nicht:
fehlt: Persönliche Ansprache in jeder email und nicht nur Standard Text "bitte entnehmen sie..."
funktioniert nicht: ALLE dokumente im subfolder anhängen. Bisher hab ich nur geschafft ein Dokument aus dem richtigen subfolder der richtigen Adresse zuzuordnen. Ich komme leider nicht weiter, da dies mein erstes längeres script ist. wahrscheinlich is das nicht so schwer aber ich bräuchte noch mal Hilfe!
Vielen Dank im Voraus!
 
vielleicht hat der lange code einige abgeschreckt, ich brauche eigentlich nur mit folgendem Teil hilfe:

-- Liste 1: Alle attachments

tell application "Finder"
set mailing to selection
set myFolders to every folder of (mailing as alias list)
set myFiles to every item of myFolders i
end tell

dieser Teil soll eigentlich den angeklickten Folder öffnen, eine Liste der Subfolder erstellen und deren jeweiligen Inhalt der richtigen Adresse zur verfügung stellen.
Vielleicht hat ja doch noch jemand eine idee...
danke
 
Hi, vielleicht hilft dir das hier weiter:

Code:
[FONT=Verdana][size=2][b]tell[/b] [color=#0000FF][i]application[/i][/color] "Finder"
	[color=#4C4D4D]--Liste anlegen mit allen Dateien im Ordner mailing[/color]
	[b]set[/b] [color=#3F7F00]mailing[/color] [b]to[/b] [b]every[/b] [color=#0000FF][i]item[/i][/color] [b]of[/b] [color=#0000FF][i]alias[/i][/color] ":Users:Username:mailing:"
	[color=#4C4D4D]--Alle Dateien im Ordner mailing durchgehen[/color]
	[b]repeat[/b] [b]with[/b] [color=#3F7F00]i[/color] [b]from[/b] 1 [b]to[/b] ([color=#0000FF][b]count[/b][/color] [b]of[/b] [color=#3F7F00]mailing[/color])
		[color=#4C4D4D]--Prüfen, ob der Dateiname ein beliebiges Stichwort enthält[/color]
		[b]if[/b] [color=#6C04D4]name[/color] [b]of[/b] [color=#0000FF][i]item[/i][/color] [color=#3F7F00]i[/color] [b]of[/b] [color=#3F7F00]mailing[/color] [b]contains[/b] "Documents" [b]then[/b]
			[b]set[/b] [color=#3F7F00]myCount[/color] [b]to[/b] [color=#3F7F00]i[/color]
		[b]end[/b] [b]if[/b]
	[b]end[/b] [b]repeat[/b]
	[color=#4C4D4D]--Gefundene Dateien in Liste schreiben[/color]
	[b]set[/b] [color=#3F7F00]myAttachments[/color] [b]to[/b] [b]every[/b] [color=#0000FF][i]item[/i][/color] [b]of[/b] [color=#0000FF][i]item[/i][/color] [color=#3F7F00]myCount[/color] [b]of[/b] [color=#3F7F00]mailing[/color] [b]as[/b] [color=#0000FF][i]alias list[/i][/color]
[b]end[/b] [b]tell[/b][/size][/FONT]

Dein Hauptproblem ist wahrscheinlich, dem entsprechendem Empfänger die richtigen Dateien zuzuordnen. Wenn Empfänger63 immer alle Dateien aus Ordner63 erhalten soll, dann musst du eine Liste anlegen mit allen Empfängern und eine mit allen Ordnern. Dann kannst du die Listen mit einer repeat-Schleife von 1-99 durchgehen.

Wenn die Reihenfolge allerdings nicht die gleiche ist, sondern du die Ordner nach Stichworten durchsuchen willst, dann musst du entweder vorgehen wie oben im Beispiel beschrieben, oder du baust ein Shellscript ein (das geht in der Regel schneller).
 
Zurück
Oben Unten