Hallo in die Runde.
Seit langen habe ich eine Routine, die mir im Fehlerfall ein Protokoll zuschickt. Dazu nutze ich ShowURL:
ShowURL “mailto:stefan.mettenbrink@web.de?subject=”+EncodeURLComponent(“Fehler in Familienbande!”)+"&body="+EncodeURLComponent(EndOfLine+MessageAndExplanation+EndOfLine+EndOfLine+"##### START Ablaufprotokoll #####"+EndOfLine+join(t,EndOfLine)+EndOfLine+"##### END #####")
Das funktioniert bei Anwendern mit Mac OS problemfrei. Bei Windowsanwendern bekomme ich immer nur so 40-50 Zeilen. Mitunter bricht die Ausgabe mitten im Wort ab.
Meine Vermutung wre, dass es irgendeine Begrenzung bei ShowURL gibt oder dass das Mailprogramm hier eine Begrenzung hat.
Welche Mglichkeit habe ich noch, eine Mail mit Anhang zu verschicken?
Fast jeder Mail-Versender hat ein kostenloses Angebot. Ich verwende Sendgrid. Die SMTP-Klassen von Xojo haben immer noch den Fehler, da die Namen der Anhnge verdoppelt sind (aus “test.txt” wird “test.txttest.txt”. CURL vom MBS oder das Chilkat-Plugin funktionieren gut.
Ich verwende die unten stehenden Zeilen. Das funktioniert unter Windows 7 / 10 ohne Probleme. Ich würde einmal die EndOfLine durch chr(12) ersetzen.
Public Sub SendMail()
dim mSubject as string
dim mBody as string
dim mNode2 as String
dim MyOStype as string
dim Remark as string
dim SLink as string = “”
dim STask as string = “”
if tfTaskID.Text.len > 0 then
STask = MakeTaskURL(tfTaskID.Text)
end if
if tfChangeID.Text.len > 0 then
SLink = “<” + EncodingToURLMBS(tfChangeID.Text) + “>”
end if
if OSsting = “l” then
MyOStype = “Linux”
else
MyOStype = “Solaris”
end if
if zsCluster.state = 1 then
// Falls Cluster
dim Nodes as string = ""
dim NodesLine as string = ""
for i as integer = 0 to ListboxNewClusterHosts.ListCount -1
if i = 0 then
Nodes = ListboxNewClusterHosts.Cell(i,0)
NodesLine = "Node 1: " + ListboxNewClusterHosts.Cell(i,0) + " "
else
Nodes = Nodes + chr(12) + ListboxNewClusterHosts.Cell(i,0)
NodesLine = NodesLine + " Node " + str(i+1) + ": " + ListboxNewClusterHosts.Cell(i,0) + " "
end if
next
dim ClusterID as string
ClusterID = "C" + ClusterName
Remark = taBemerkung.Text
Remark = ReplaceAll(Remark, EndOfLine.Windows, chr(12))
Remark = ReplaceAll(Remark, EndOfLine.Macintosh, chr(12))
Remark = ReplaceAll(Remark, EndOfLine.OSX, chr(12))
Remark = ReplaceAll(Remark, EndOfLine.UNIX, chr(12))
Remark = ReplaceAll(Remark, EndOfLine, chr(12))
mSubject = "Cluster Info: Cluster: " + ClusterID + " " + NodesLine
mBody = "Cluster: " + ClusterID + chr(12) +_
Nodes + chr(12) +_
"SMT TaskID: " + SMTTask + chr(12) +_
"SMT ChangeID: " + SMTLink + chr(12) +_
"Order Number: " + MakeOrderNumberLinkForMail(tfOrderNumber.Text) + chr(12) +_
langOS + " " + MyOStype + chr(12) + _
langBemerkung + ": " + Remark
end if
dim URLString as string
URLString = “mailto:?subject=” + mSubject + “&body=” + mBody
if DebugBuild then
system.log(system.LogLevelInformation, “Mailto=” + URLString)
end if
ShowURL URLString
End Sub
-> Horst Jehle
Vielen Dank für den Code!
Ich werde mir das in den kommenden Tagen ansehen (derzeit zieht meine Tochter um, da habe ich wenig Zeit dazu).
Ich hätte vermutet, dass EncodeURLComponent die EndOfLine passen umcodiert. Ist aber zumindest einen Versuch wert.
Gruß, Stefan Mettenbrink.