Protokoll per Mail verschicken

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.