SMTP‑Serververbindung optimieren
Optimierung von E‑Mail‑Client‑Verbindungen
Benutzer stoßen häufig auf Verzögerungen aufgrund der standardmäßigen Timeout‑Einstellungen, was zu verlängerten Verbindungszeiten oder sogar erfolglosen Versuchen führen kann.
Um die Effizienz dieser Verbindungen zu verbessern, bietet Aspose.Email für .NET Eigenschaften wie Timeout und GreetingTimeout. Während die Timeout Eigenschaft verwaltet die Gesamtdauer von E‑Mail‑Operationen, die GreetingTimeout Eigenschaft zielt speziell auf die Zeit, die der Server benötigt, um nach dem Verbindungsaufbau eine Begrüßungszeichenfolge zu senden.
Im folgenden Abschnitt werden wir untersuchen, wie man diese Einstellungen konfiguriert, um die Verbindungs‑geschwindigkeit und Zuverlässigkeit Ihres E‑Mail‑Clients zu verbessern.
Beim Verwenden der Timeout Eigenschaft, ist es wichtig zu beachten, dass die ihr zugewiesenen Werte ausreichend lange Intervalle haben sollten, um langwierige Vorgänge zu ermöglichen.
Allerdings kann das alleinige Vertrauen auf diese Eigenschaft dazu führen, dass der Verbindungsaufbau länger dauert als erwartet. Das kann auftreten, wenn der E‑Mail‑Client den automatischen Modus für den Verbindungsaufbau verwendet. In diesem Modus durchläuft der Client verschiedene Verbindungsparameter, bis eine Verbindung hergestellt wird.
Beim Verbinden mit SMTP-, IMAP- und POP3-Servern wird nach erfolgreichem Verbindungsaufbau eine Begrüßungszeichenfolge an den Client gesendet. Server können implizite oder explizite (START TLS) SSL/TLS-Verbindungsinitiierung verwenden. In Fällen, in denen der Verbindungsmodus nicht übereinstimmt (z. B. erwartet der Server eine implizite SSL‑Verbindung, während der Client versucht, eine nicht gesicherte oder explizite SSL‑Verbindung herzustellen), sendet der Server keine Begrüßungszeichenfolge.
Infolgedessen kann der Benutzer eine längere Zeit warten, bis der Timeout erreicht ist, und der Client wechselt zur nächsten Verbindungsoption.
Um dieses Problem zu beheben, die GreetingTimeout Eigenschaft wurde eingeführt. Diese Eigenschaft erlaubt es Benutzern, einen Timeout für die Begrüßungszeichenfolge festzulegen, wodurch die Zeit für den automatischen Verbindungsaufbau verkürzt wird. Durch die Implementierung der GreetingTimeout Eigenschaft, können Benutzer die Leistung ihres E‑Mail‑Clients optimieren und lange Wartezeiten beim Verbindungsaufbau vermeiden.
Das folgende Codebeispiel zeigt, wie man die EmailClient.GreetingTimeout Eigenschaft:
using (SmtpClient client = new SmtpClient("localhost", 25, "username", "password"))
{
client.GreetingTimeout = 4000;
}
Server‑Erweiterungen abrufen
Die SmtpClient ermöglicht das Abrufen der Server‑Erweiterungen, die ein Server unterstützt, wie IDLE, UNSELECT, QUOTA usw. Dies hilft, die Verfügbarkeit einer Erweiterung zu erkennen, bevor der Client für diese Funktionalität verwendet wird. Die GetCapabilities() Methode gibt die unterstützten Erweiterungstypen als String‑Array zurück.
Das folgende Code‑Snippet zeigt, wie man Server‑Erweiterungen abruft.
Mail‑Server‑Anmeldeinformationen ohne Senden von E‑Mails validieren
Die Aspose.Email‑API bietet die Möglichkeit, Mail‑Server‑Anmeldeinformationen zu validieren, ohne eine E‑Mail zu senden. Dies kann mit der ValidateCredentials Methode, die für die Überprüfung der Echtheit und Korrektheit der bereitgestellten E‑Mail‑Anmeldeinformationen verantwortlich ist, die normalerweise zur Authentifizierung beim Verbindungsaufbau mit dem Server verwendet werden.
Sie prüft, ob die bereitgestellten E‑Mail‑Anmeldeinformationen, wie Benutzername und Passwort, gültig sind und ob der Client eine erfolgreiche Verbindung zum Server herstellen kann. Diese Überprüfung der Anmeldeinformationen stellt sicher, dass der Kunde sicher auf das E‑Mail‑Konto zugreifen und verschiedene Vorgänge ausführen kann, wie das Senden von E‑Mails.
using (SmtpClient client = new SmtpClient(server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto))
{
client.Timeout = 4000;
if (client.ValidateCredentials())
{
//to do something
}
}
Es gibt auch eine Version der Methode ValidateCredentialsAsync um eine asynchrone Operation durchzuführen.
E‑Mail über SOCKS‑Proxy‑Server senden
In solchen Fällen können Mail‑Clients nicht über das Internet kommunizieren, ohne die Proxy‑Adresse anzugeben. Aspose.Email unterstützt die Versionen 4, 4a und 5 des SOCKS‑Proxy‑Protokolls. Um eine E‑Mail über einen Proxy‑Server zu senden, führen Sie die folgenden Schritte aus:
- Initialisieren Sie den Proxy mit den erforderlichen Informationen, d. h. Proxy‑Adresse, Port und SOCKS‑Version.
- Initialisieren SmtpClient mit der Host‑Adresse, dem Benutzernamen und Passwort sowie weiteren Einstellungen.
- Setzen Sie die Proxy‑Eigenschaft des Clients auf die Proxy Objekt, das früher erstellt wurde.
Das folgende Code‑Snippet zeigt, wie Sie eine Verbindung zu einem Server über einen Proxy‑Server herstellen.
E‑Mail über HTTP‑Proxy‑Server senden
Authentifizierungsmethoden für sichere SMTP‑Verbindung identifizieren
Aspose.Email bietet Eigenschaften, mit denen geprüft werden kann, welche Authentifizierungsmethoden vor dem Senden einer E‑Mail zur Herstellung einer sicheren Verbindung mit dem SMTP‑Server verwendet werden können:
- die SmtpClient.SupportedAuthentication Eigenschaft gibt eine Liste von Authentifizierungsmethoden zurück, die vom SMTP‑Server unterstützt werden.
- die SmtpClient.AllowedAuthentication Eigenschaft gibt eine Liste von Authentifizierungsmethoden zurück, die vom Benutzer definiert wurden.
smtpClient.AllowedAuthentication = SmtpKnownAuthenticationType.Login;
SMTP‑Authentifizierungsinformationen aus KONFIG‑Datei laden
Damit Aspose.Email eine Konfigurationsdatei lesen kann, muss diese im korrekten Format vorliegen. Unten zeigen wir ein Beispiel einer XML‑Konfigurationsdatei sowie den Code, der sie einliest. Das folgende Code‑Snippet zeigt, wie man SMTP‑Authentifizierungsinformationen aus einer KONFIG‑Datei lädt.
Sobald die Konfigurationseinstellungen definiert sind, laden Sie diese direkt in eine Instanz von SmtpClient Klasse, die einen ihrer überladenen Konstruktoren verwendet. Das folgende Code‑Snippet demonstriert das Lesen von Konfigurationseinstellungen aus der Konfigurationsdatei und das direkte Laden in die Instanz von SmtpClient.
SMTP‑Client an bestimmte IP‑Adresse binden
Die Möglichkeit, dass ein Host mehrere Ports zum Versenden von E‑Mails zur Verfügung hat, kann nicht ausgeschlossen werden. In solchen Fällen kann es erforderlich sein, den E‑Mail‑Versandclient an einen bestimmten Port auf dem Host zu binden. Dies kann ebenfalls mit der Aspose.Email‑API mittels des SmtpClient BindIPEndPoint Eigenschaft. Die API‑ SmtpClient kann so eingestellt werden, dass eine bestimmte IP-Adresse auf dem Host verwendet wird, indem das spezifische IP-Endpunkt angegeben wird. Das folgende Code‑Snippet zeigt, wie Sie den SMTP‑Client an eine bestimmte IP‑Adresse auf dem Host binden.
Timeout für Mail‑Operationen festlegen
Jeder E‑Mail‑Vorgang benötigt je nach vielen Faktoren (Netzwerkverzögerungen, Datenmenge, Server‑Leistung usw.) gewisse Zeit. Sie können für alle E‑Mail‑Vorgänge einen Timeout festlegen. Das nachstehende Code‑Beispiel zeigt, wie Sie das mit dem Timeout Eigenschaft.
Hinweis: Sie sollten keine großen Werte festlegen, um lange Wartezeiten in Ihrer Anwendung zu vermeiden.
using (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.Timeout = 60000; // 60 seconds
// some code...
}
Verwendung kryptografischer Protokolle
Aspose.Email unterstützt die kryptografischen Protokolle SSL (veraltet) und TLS, um Kommunikationssicherheit zu bieten. Sie können die kryptografische Verschlüsselung aktivieren, um den Datenaustausch zwischen Ihrer Anwendung und den Mail‑Servern zu schützen.
HINWEIS: Sie sollten nur jene Versionen des Protokolls festlegen, die vom .NET‑Framework unterstützt werden. Wenn einige Versionen des kryptografischen Protokolls von Ihrer aktuellen .NET‑Framework‑Version nicht unterstützt werden, werden sie ignoriert und übersprungen. In diesem Fall werden keine Ausnahmen erzeugt. Bitte verwenden Sie SetSupportedEncryptionUnsafe Methode, wenn Sie die Protokolle ohne Kompatibilitätsprüfungen festlegen möchten.
Das untenstehende Codebeispiel zeigt, wie Sie TLS 1.3 für SmtpClient Klasseninstanz.
using (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.SupportedEncryption = EncryptionProtocols.Tls13;
// some code...
}
Falls ein angegebenes Verschlüsselungsprotokoll in der aktuellen Version des .NET‑Frameworks nicht unterstützt wird, besteht der Unterschied im Verhalten zwischen SetSupportedEncryptionUnsafe Methode und SupportedEncryption Eigenschaft ist wie folgt:
- Wenn SupportedEncryption Wird die Eigenschaft verwendet, reduziert der E‑Mail‑Client das Verschlüsselungsprotokoll auf ein unterstütztes Niveau.
- Wenn SetSupportedEncryptionUnsafe Wird die Methode verwendet, wirft der E‑Mail‑Client Ausnahmen.
SMTP‑Authentifizierung mit CRAM‑MD5‑Mechanismus
Der CRAM‑MD5‑Authentifizierungsmechanismus von Aspose.Email für .NET bietet eine zusätzliche Sicherheitsebene beim Zugriff auf den Server. Das folgende Code‑Snippet zeigt, wie man diese Funktion in Ihr Projekt implementiert:
smtpClient.AllowedAuthentication = SmtpKnownAuthenticationType.CramMD5;