Benutzer-Werkzeuge

Webseiten-Werkzeuge


k19:k19.7:k19.7.1:k19.7.1.1:start

19.7.1.1 Methode SendMail – Klasse Desktop (gb.desktop)

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 ] )
  • TO ist eine Liste der Empfänger (String-Array)
  • CC ist eine weitere Liste von Empfängern mit CC für carbon-copy, (String-Array)
  • BCC ist eine weitere Liste von Empfängern mit BCC für blind-carbon-copy, (String-Array)
  • Subject ist der Betreff der EMail
  • Body ist der Text in der EMail
  • Attachment ist der Pfad zur Anhang-Datei

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:

client1

Abbildung 19.7.1.1.1: Gambas-Projekt 'SendMail'

Nach dem Abschicken werden die relevanten Daten an den EMail-Client übergeben:

client2

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:

  • Der Anhang wird bei Thunderbird übertragen und angezeigt, aber nicht alle EMail-Clients übernehmen den Anhang korrekt.
  • Sie können im Programm mehrere Dateien als Anhang auswählen. Es wird aber nur eine Datei als Anhang übernommen und zwar die letzte.
  • Die Empfängerlisten werden nicht als komma-getrennte Liste in den EMail-Client übernommen, sondern in separaten, einzelnen Zeilen!
  • Es hat sich gezeigt, dass jeweils nur ein Empfänger aus den Listen CC und BCC korrekt eingetragen wird. Alle weiteren erscheinen als normaler Empfänger.

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) ] 

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k19/k19.7/k19.7.1/k19.7.1.1/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge