Die Komponente ermöglicht es Ihnen, EMails mit Hilfe des SMTP-Protokolls zu senden. Unterstützt werden u.a. EMail-Anhänge und optional Verbindungssicherheit über SSL oder TLS, sofern das Programm 'openssl' auf Ihrem System installiert ist. Diese Komponente gb.net.smtp ist seit der Version 3.6 in allen Gambas3-Versionen vorhanden und wurde komplett in Gambas geschrieben.
Die Klasse SmtpClient hat folgende Eigenschaften:
Eigenschaft | Datentyp | Beschreibung |
---|---|---|
Count | Integer | Gibt die Anzahl der Teile der aktuellen EMail zurück. |
MessageID | String | Setzt die Message-ID in das Feld 'Message-Id' im Header oder gibt die ID zurück. |
InReplyTo | String | Setzt die EMail-Adresse in das Feld 'In-Replay-To' im Header oder gibt die EMail-Adresse zurück. |
Debug | Boolean | Gibt an, ob der Debugging-Modus für den SMTP-Client aktiviert wurde oder schaltet den Modus zu. Wenn der Debugging-Modus aktiviert ist, wird die gesamte Client-Aktivität in der Konsole der Gambas-IDE ausgegeben. |
Alternative | Boolean | Ermittelt oder legt fest, ob Mail-Anhänge gleiche Daten in unterschiedlichen Formaten sind – kodiert in HTML, UTF-8 oder in ASCII. Standardmäßig ist diese Eigenschaft FALSE. Eine Änderung müssen Sie vor der Add-Methode definieren. |
From | String | Ermittelt oder legt die Return-Adresse der EMail fest (Absender). |
To | String[] | Ermittelt oder legt die Liste der Empfänger der EMail (EMail-Adressen) fest. Der Typ der Eigenschaft ist ein String-Array, so dass Sie mehrere Empfänger für die gleiche EMail angeben können. |
Cc | String[] | Ermittelt oder legt die Liste der zusätzlichen (Cc-)Empfänger (carbon copy) der EMail (EMail-Adressen) fest. Der Typ der Eigenschaft ist ein String-Array, so dass Sie mehrere zusätzliche Empfänger für die gleiche EMail angeben können. |
Bcc | String[] | Ermittelt oder legt die Liste der zusätzlichen (Bcc-)Empfänger (blind carbon copy) der EMail (EMail-Adressen) fest. Der Typ der Eigenschaft ist ein String-Array, so dass Sie mehrere zusätzliche, versteckte Empfänger für die gleiche EMail angeben können. |
Host | String | Ermittelt oder legt den SMTP-Server fest, an den die EMail übergeben wird (MTA). |
Port | Integer | Ermittelt oder legt den SMTP-Port fest, der vom SMTP-Server verwendet wird. Der Standard-Port ist 25. |
User | String | Ermittelt den Benutzer-Namen oder legt diesen für die Identifizierung fest (Login). |
Password | String | Ermittelt oder legt das Passwort fest, das zur Authentifizierung erforderlich ist (Login). |
Subject | String | Ermittelt oder legt den Betreff der EMail fest. |
Body | String | Ermittelt oder legt den EMail-Text fest. Der Mail-Text wird immer als erster Teil gesendet. Es wird der Mime-Typ 'text/plain; charset=utf-8' verwendet. |
Encrypt | Integer | Ermittelt oder legt die Methode der SMTP-Verbindungssicherheit fest. |
Tabelle 24.4.0.1.1 : Eigenschaften der Klasse SmtpClient
Die Konstanten der Klasse SmtpClient in Verbindung mit der Encrypt-Eigenschaft sind:
Die Klasse SmtpClient verfügt nur über drei Methoden:
Methode | Beschreibung |
---|---|
Add ( Data As String [ , MimeType As String, Name As String ] ) | Fügt einen EMail-Anhang hinzu. Data sind die Daten, die in der Regel direkt aus der Datei kommen, die Sie anhängen möchten. MimeType ist der MIME-Typ der angehängten Daten. Standardmäßig ist es 'text/plain'. Name ist der Name des Anhangs. Er wird automatisch generiert, wenn er nicht angegeben wurde. Gegenwärtig werden nicht alle MIME-Typen unterstützt. |
AddHeader ( Name As String, Value As String ) | Fügt ein benutzer-definiertes Header-Feld in den Header ein. Name ist der Feld-Name und Value ist der Feld-Wert. |
Send() | Die EMail wird an den SMTP-Server (MTA) übergeben. Wenn die Verbindung verschlüsselt wird, dann wird das Programm 'openssl' im Hintergrund eingesetzt. Der openssl-Prozess wird beendet, wenn die EMail erfolgreich gesendet wurde oder wenn ein Fehler beim Senden auftrat. |
Tabelle 24.4.0.2.1 : Methoden der Klasse SmtpClient
Die statische Methode FormatDate ( Date As Date ) As String formatiert ein Datum nach der Syntax der RFC 822: SmtpClient.FormatDate(Now) → Mon, 01 Feb 2016 18:12:36 GMT .
Wenn ein SMTP-Server neben den Verfahren AUTH PLAIN und AUTH LOGIN auch die Authentifizierung über das Verfahren CRAM-MD5 (Challenge Response Authentication Mechanism, Message Digest 5) zulässt, dann wird der SMTP-Username zur Identifizierung des Users im Klartext im SSL-Tunnel gesendet, aber das SMTP-Passwort wird verschlüsselt übertragen:
Konsole:
[1] hans@linux:~$ openssl s_client -quiet -connect mx.freenet.de:465 [2] ... [3] 220 mx8.freenet.de ESMTP Exim 4.85 Tue, 02 Feb 2016 07:53:59 +0100 [4] EHLO linux [5] 250-mx8.freenet.de Hello p4fca44f0.dip0.t-ipconnect.de [79.202.68.240] [6] 250-SIZE 209715200 [7] 250-8BITMIME [8] 250-ETRN [9] 250-PIPELINING [10] 250-AUTH LOGIN PLAIN CRAM-MD5 [11] 250 HELP [12] AUTH CRAM-MD5 [13] 334 PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ+ [14] dGltIGI5MTNhNjAyYzdlZGE3YTQ5NWI0ZTZlNzMzNGQzODkw [15] 235 Authentication succeeded [16] QUIT [17] 221 mx8.freenet.de closing connection [18] hans@linux:~$
Für die Berechnung der zu sendenden Antwort in der Zeile 14 können Sie die folgende Funktion verwenden. Als Parameter werden der SMTP-User-Name, das dazu gehörende SMTP-User-Passwort und die vom Server gestellte 'Aufgabe' übergeben:
[1] Public Function CRAMMD5(sUsername As String, sPassword As String, sChallenge64 As String) As String [2] [3] Dim sChallenge, sCommand, sDigestHex, sResponse As String [4] [5] sChallenge = UnBase64(sChallenge64) [6] [7] sCommand = "openssl md5 -hmac " & Shell$(sPassword) & " << EOF\n" & sChallenge [8] Shell sCommand To sDigestHex [9] [10] sDigestHex = Split(Trim(sDigestHex), "=")[1] [11] sResponse = Base64(sUsername & sDigestHex) [12] [13] Return sResponse [14] [15] End ' Function CRAMMD5(...)
Hinweise:
Der folgende Exkurs fasst wesentliche, ausgewählte Aspekte zum Thema SMTP zusammen: