E-Mail erstellen und PDF anhngen

Wie hnge ich ein PDF oder generell eine Datei an eine E-Mail dran?

Die Mail erstelle ich mit: showURL “mailto:” + encodeURL(address) + “?subject=” + encodeURL(subject) + “&body=” + encodeURL(body)

Damit gehen Anhnge schlecht.
Dann besser SMTPSocket oder CURL Plugin.

Hier ist ein lterer Thread der die Problematik mit showURL mailto und Anhnge darlegt…

link text

also showURL mailto und &attachment funzt hier mit Mail nicht…

CURL will ich nicht nehmen, ich will alles an Mail übergeben

Jemand noch eine Idee, wie ich einen Anhang in mail bekomme?

Applescript. Das folgende Script funktioniert mit meinem AS-Wrapper runAS, den es auf meiner Webseite unter http://www.mothsoftware.com/content/xojo/ gibt:

[code] dim theDictionary as new Dictionary
theDictionary.Value(“theSubject”) = theSubject
theDictionary.Value(“theBody”) = theBody

dim theScript(-1) as String
theScript.Append “property theSubject: ‘’”
theScript.Append “property theBody: ‘’”
theScript.Append “tell application ‘Mail’”
theScript.Append “set newMessage to make new outgoing message with properties {subject: theSubject, content: theBody}”
theScript.Append “tell newMessage”
theScript.Append “set visible to true”
dim CurrentFrom, currentCC as Integer
for currentFrom = 0 to ubound(theFromList)
theScript.Append “make new to recipient at end of to recipients with properties {address: '” + theFromList(currentFrom) + “’}”
next
for currentCC = 0 to ubound(theCCList)
theScript.Append “make new cc recipient at end of cc recipients with properties {address: '” + theCCList(currentCC) + “’}”
next
theScript.append “end tell”
theScript.append “activate”
theScript.append “end tell”

dim doAppleScript as new RunAS(theScript, array(0), false, true) 'yyy 'okay
doAppleScript.ExecuteScriptWithParameters(theDictionary)[/code]

Und das mit dem Anhang sieht auch nicht kompliziert aus: https://gist.github.com/Moligaloo/3850710

Danke, ich habe auch noch diesen Thread gefunden:
https://forum.xojo.com/11446-simple-mailto-with-attachment

Ich probiere es jetzt…

Ich mag minimalistische Lösungen, deshalb ein AppleScript.
Das einzige Problem, was ich habe ist es, den Pfad so zu übergeben, wie es AS mag.
Mit nativePath und mit shellpath bekomme ich nicht das gewünschte Format (siehe unten)

[code]on run {theSubject, theAddress, theAttachmentFile}
tell application “Mail”

	-- set theSubject to "Subject" -- the subject
	-- set theAddress to "xxx@163.com" -- the receiver 
	-- set theAttachmentFile to "Macintosh HD:Users:stefan:Desktop:attachment.pdf"
	
	set msg to make new outgoing message with properties {subject:theSubject, visible:true}
	
	tell msg to make new to recipient at end of every to recipient with properties {address:theAddress}
	tell msg to make new attachment with properties {file name:theAttachmentFile as alias}
	
	activate msg
	
end tell

end run[/code]

Was passiert, wenn Du nativePath verwendest? Hast Du schon versucht, aus einem Shell Path in Xojo einen Posix-Pfad in AppleScript zu machen?

also mit nativePath und dann

bei: set newpath to POSIX file theAttachmentFile , bleibt das Script stehen, verstehe ich einfach nicht…

[code]on run {theSubject, theAddress, theAttachmentFile}
tell application “Mail”
set newpath to POSIX file theAttachmentFile
set msg to make new outgoing message with properties {subject:theSubject, visible:true}
tell msg to make new to recipient at end of every to recipient with properties {address:theAddress}
tell msg to make new attachment with properties {file name:theAttachmentFile as alias}

	activate msg
	
end tell

end run[/code]

das funktioniert scheinbar, aber die angehnte Datei ist leer… verrckt…

[code]on run {theSubject, theAddress, theAttachmentFile}
tell application “Mail”
set thisPOSIXPath to (the POSIX path of theAttachmentFile)
set msg to make new outgoing message with properties {subject:theSubject, visible:true}
tell msg to make new to recipient at end of every to recipient with properties {address:theAddress}
tell msg to make new attachment with properties {file name:thisPOSIXPath}

	activate msg
	
end tell

end run[/code]

Ein Posix-Pfad ist fast ein Shell-Pfad. Wenn in Deinem Pfad Spaces oder Bindestriche auftauchen, dann klappt es nicht. Z.B.

set theFile to (choose file) POSIX path of theFile
macht “/Users/beatrixwillius/Desktop/Bildschirmfoto 2015-07-22 um 13.57.00.png”. Und der dazugehörige Shell-Pfad ist "/Users/beatrixwillius/Desktop/Bildschirmfoto\ 2015\-07\-22\ um\ 13.57.00.png. Also ist das Script mit dem Posix-Pfad richtig und Du mußt das in Xojo so machen:

[code] dim f as FolderItem = GetOpenFolderItem("")
dim s as string = f.ShellPath
s = ReplaceAll(s, "\ ", " ")
s = ReplaceAll(s, “\-”, “-”)

test(“blabla”, “blubber”, s)[/code]

wobei test hier das AppleScript ist.

Ja, dann sieht das so aus:
shellPath:
/Applications/Dev/Projecte/Faktura/PDF\-Ordner/Angebot\ Nr.\ 100\-15.pdf
nach deinen Zeilen dann so:
/Applications/Dev/Projecte/Faktura/PDF-Ordner/Angebot Nr. 100-15.pdf

im AS dann:
set thisPOSIXPath to (the POSIX path of theAttachmentFile)
tell msg to make new attachment with properties {file name:thisPOSIXPath}

Die Datei hngt dann an uns ist leer, kann nicht geffnet werden, obwohl die Datei im Ordner ganz normal mit Vorschau angezeigt werden kann

Ich habs… die Datei ist noch nicht fertig geschrieben, wenn ich sie Anhnge, das ist das eigentliche Problem.

so geht es auf jeden Fall, wie finde ich denn heraus, wann die Datei fertig geschrieben ist?

[code]on run {theSubject, theAddress, theAttachmentFile}
tell application “Mail”

	set msg to make new outgoing message with properties {subject:theSubject, visible:true}
	tell msg to make new to recipient at end of every to recipient with properties {address:theAddress}
	tell msg to make new attachment with properties {file name:POSIX file theAttachmentFile}
	
	activate msg
	
end tell

end run[/code]

Wie schreibst Du denn die Datei?

Als primitiver Erstversuch würde ich es mit einem App.SleepCurrentThread(100) ausprobieren.

Ich schreibe über den Druck eine PDF-Datei mit Christians Lösung dafür…

Läuft jetzt, ich rufe nun die Methoden nacheinander auf, zuvor hatte ich alles in eine Methode gepackt…

Danke

Das sollte eigentlich keinen Unterschied machen. Der Finder benötigt manchmal etwas Zeit, um Dateien zu schließen. Hauptsache, es funktioniert jetzt.