Client-Optionen
|
|
Client Option
sind Funktionen, die als optionale Argumente für die NewClient()
Methoden verwendet werden können, um die Standardeinstellungen des zurückgegebenen Client
zu überschreiben.
WithDebugLog
aktiviert die Debug-Protokollierung des SMTP-Verkehrs auf dem Client
. Wenn aktiviert, wird jede SMTP-Kommunikation vom Client zum Server und umgekehrt in os.Stderr
protokolliert.
In der Ausgabe steht C --> S
für die Kommunikation vom Client zum Server und C <-- S
für die Kommunikation zurück vom Server zum Client.
Hier ist ein Beispiel für die Ausgabe:
2023/01/15 20:21:18 [DEBUG] C --> S: EHLO client.example.com
2023/01/15 20:21:18 [DEBUG] C <-- S: 250 server.example.com
PIPELINING
SIZE 152428800
ETRN
STARTTLS
AUTH LOGIN PLAIN
AUTH=LOGIN PLAIN
ENHANCEDSTATUSCODES
8BITMIME
DSN
2023/01/15 20:21:18 [DEBUG] C --> S: STARTTLS
2023/01/15 20:21:18 [DEBUG] C <-- S: 220 2.0.0 Ready to start TLS
2023/01/15 20:21:18 [DEBUG] C --> S: EHLO client.example.com
2023/01/15 20:21:18 [DEBUG] C <-- S: 250 server.example.com
PIPELINING
SIZE 152428800
ETRN
AUTH LOGIN PLAIN
AUTH=LOGIN PLAIN
ENHANCEDSTATUSCODES
8BITMIME
DSN
2023/01/15 20:21:18 [DEBUG] C --> S: AUTH LOGIN
2023/01/15 20:21:18 [DEBUG] C <-- S: 334 VXNlcm5hbWU6
2023/01/15 20:21:18 [DEBUG] C --> S:
2023/01/15 20:21:20 [DEBUG] C <-- S: 535 5.7.8 Error: authentication failed: VXNlcm5hbWU6
|
|
Die WithDSN
Optionsfunktion weist den Client
an, DSNs anzufordern (wenn der Server sie unterstützt), wie in RFC 1891 beschrieben.
DSNs (Delivery Status Notification) sind eine Erweiterung des SMTP-Protokolls und müssen von dem sendenden Server unterstützt werden. Der RFC für DSNs definiert verschiedene Parameter, von denen wir einmal die implementiert haben, die wir für go-mail für am sinnvollsten halten:
- Die
RET
-Erweiterung für denMAIL FROM
-Befehl, damit der Benutzer angeben kann, ob ein DSN die vollständige Mail (FULL
) oder nur die Kopfzeilen (HDRS
) der gesendeten Mail enthalten soll. - Die
NOTIFY
-Erweiterung, die es dem Benutzer ermöglicht, einen DSN für die verschiedenen Arten von erlaubten Situationen anzufordern:NEVER
,SUCCESS
,FAILURE
undDELAY
ENVID
und ORCPT
werden derzeit nicht unterstützt, könnten aber in einer späteren Version folgen (bitte eröffne ein Issue, wenn du darin einen Nutzen siehst).
Standardmäßig setzt WithDSN()
die FULL
Mail From Return Option und die SUCCESS
und FAILURE
Recipient Notify Optionen. Wenn du andere Einstellungen für den DSN verwenden möchtest, lies bitte die Dokumentation für WithDSNMailReturnType und WithDSNRcptNotifyType
|
|
WithDSNMailReturnType
ermöglicht es dem Client
, DSNs anzufordern (wenn der Server es unterstützt), wie in der RFC 1891 beschrieben und den MAIL FROM
Rückgabeoptionstyp auf die angegebene DSNMailReturnOption
go-mail hat die folgenden zwei DSNMailReturnOption
Typen bereits eingebaut:
DSNMailReturnHeadersOnly
: verlangt, dass nur die Kopfzeilen der Nachricht zurückgegeben werden.
Siehe: RFC 1891, Abschnitt 5.3DSNMailReturnFull
: fordert an, dass die gesamte Nachricht in jeder “fehlgeschlagenen” Zustellungsstatus-Benachrichtigung, die für diesen Empfänger ausgegeben wird, zurückgegeben wird
Siehe: RFC 1891, Abschnitt 5.3
|
|
WithDSNRcptNotifyType
ermöglicht dem Client
, DSNs wie in RFC 1891 beschrieben anzufordern und setzt die RCPT TO
Notify-Optionen auf die angegebene Liste von DSNRcptNotifyOption
go-mail hat die folgenden DSNRcptNotifyOption
Typen bereits eingebaut:
DSNRcptNotifyNever
: fordert, dass ein DSN unter keinen Umständen an den Absender zurückgeschickt wird.
Siehe: RFC 1891, Abschnitt 5.1DSNRcptNotifySuccess
: fordert an, dass ein DSN bei erfolgreicher Übergabe ausgegeben wird
Siehe: RFC 1891, Abschnitt 5.1DSNRcptNotifyFailure
: fordert an, dass ein DSN bei Zustellungsfehler ausgegeben wird
Siehe: RFC 1891, Abschnitt 5.1DSNRcptNotifyDelay
: gibt die Bereitschaft des Senders an, “verzögerte” DSNs zu empfangen. Verspätete DSNs können ausgestellt werden, wenn sich die Zustellung einer Nachricht um eine ungewöhnliche Zeitspanne verzögert hat (wie vom MTA bestimmt, bei dem die Nachricht verzögert wurde), aber der endgültige Zustellungsstatus (ob erfolgreich oder nicht) nicht ermittelt werden kann. Das Fehlen des Schlüsselworts DELAY in einem NOTIFY-Parameter bedeutet, dass unter keinen Umständen ein “verzögerter” DSN ausgegeben werden darf. Siehe: RFC 1891, Abschnitt 5.1
|
|
WithHELO
weist den Client
an, die angegebene Zeichenkette als HELO/EHLO Begrüßungshost zu verwenden. Standardmäßig verwendet der Client
die Methode os.Hostname()
von Go, um den lokalen Hostnamen zu ermitteln und diesen für die HELO/EHLO-Begrüßung zu verwenden. WithHELO
wird dies außer Kraft setzen.