Mit Hilfe der Methode SendMail(..) können Sie eine EMail aufbereiten, die dann nicht direkt sondern mit dem Standard-EMail-Programm Ihres Systems verschickt werden kann:
SendMail ( TO As String[] [ , CC As String[], BCC As String[], Subject As String, Body As String, Attachment As String ] )
Die Angabe einer EMail-Adresse (TO) ist notwendig. Alle weiteren Argumente sind optional.
Es reicht völlig aus, wenn Sie in Ihrem Programm die notwendigen und optionalen Parameter bereitstellen oder in einem Formular die Daten eingeben lassen – so, wie es im folgenden Projekt demonstriert wird:
Abbildung 19.7.1.1.1: Gambas-Projekt 'SendMail'
Nach dem Abschicken werden die relevanten Daten an den EMail-Client übergeben:
Abbildung 19.7.1.1.2: EMail-Client als Standard-EMail-Programm im System
Hier finden Sie den vollständigen Quelltext:
' Gambas class file Private sEMailAnhangPfad As String Public Sub Form_Open() FMain.Center HSplit1.Layout = [100, 0] System.Language = "de_DE.UTF-8" FMain.Arrangement = Arrange.Vertical FMain.Expand = False FMain.Margin = True FMain.Spacing = True FMain.Padding = 0 HBox5.Expand = False HBox5.Spacing = True HBox5.Margin = False HBox5.Padding = 0 End ' Form_Open() Public Sub btnPlusAttachment_Click() Dialog.Title = "EMail-Anhang-Auswahl-Dialog" Dialog.Path = User.Home If Dialog.OpenFile() Then Return HSplit1.Layout = [75, 25] sEMailAnhangPfad = Dialog.Path ListBox1.Add(File.Name(sEMailAnhangPfad)) End ' btnPlusAttachment_Click() Public Sub btnEMailToClient_Click() Dim sToList, sCCList, sBCCList, sSubject, sEMailBody, sAttachment As String Dim aSendTo, aSendCC, aSendBCC As New String[] ' -------------------------------------------------------------------- If txbEMailAdressen.Text Then sToList = Replace(txbEMailAdressen.Text, Chr(32), "") If InStr(sToList, ",") Then aSendTo = Split(sToList, ",") Else aSendTo.Add(sToList) Endif ' InStr(sToList, ",") ? Endif ' txbEMailAdressen.Text ? ' -------------------------------------------------------------------- If txbCarbonCopy.Text Then sCCList = Replace(txbCarbonCopy.Text, Chr(32), "") If InStr(sCCList, ",") Then aSendCC.Add(Split(sCCList, ",")[0]) Else aSendCC.Add(sCCList) Endif ' InStr(sCCList, ",") ? Endif ' txbCarbonCopy.Text ? ' -------------------------------------------------------------------- If txtBlindCarbonCopy.Text Then sBCCList = Replace(txtBlindCarbonCopy.Text, Chr(32), "") If InStr(sBCCList, ",") Then aSendBCC.Add(Split(sBCCList, ",")[0]) Else aSendBCC.Add(sBCCList) Endif ' InStr(sBCCList, ",") Endif ' txtBlindCarbonCopy.Text ? ' -------------------------------------------------------------------- If txtSubject.Text Then sSubject = txtSubject.Text Else If Message.Warning("Die EMail hat keinen Betreff!", "Nicht senden!", "Ohne Betreff senden.") = 1 Then txtSubject.SetFocus Return Else sSubject = "" Endif ' Button 1 gedrückt ? Endif ' txtSubject.Text ? ' -------------------------------------------------------------------- If txaMailBody Then sEMailBody = txaMailBody.Text Else If Message.Warning("Die EMail ohne Text senden?", "Nicht senden!", "Ja - ohne Text senden.") = 1 Then txtSubject.SetFocus Return Else sEMailBody = "" Endif ' Button 1 gedrückt ? Endif ' txaMailBody ? ' -------------------------------------------------------------------- sAttachment = sEMailAnhangPfad ' -------------------------------------------------------------------- Desktop.SendMail(aSendTo, aSendCC, aSendBCC, sSubject, sEMailBody, sAttachment) End ' btnEMailToClient_Click()
Hinweise – bezogen auf den EMail-Client Thunderbird:
Das liegt m.E. daran, dass intern das Konsolen-Programm xdg-email benutzt wird, um eine EMail an den bevorzugten EMail-Client zu schicken. Dort wird ein feiner Unterschied zwischen mehreren Adressen bei TO und einer Adresse bei CC und BCC gemacht.
xdg-email [--utf8] [--cc address] [--bcc address] [--subject text] [--body text ] [--attach file] [ mailto-uri | address(es) ]