Verbindung zum SMTP‑Server herstellen

Die folgenden Eigenschaften müssen beim Verbinden mit einem SMTP‑Server mit SSL‑Unterstützung gesetzt werden.

Im Folgenden zeigen wir, wie man:

  1. Benutzernamen festlegen.
  2. Passwort festlegen.
  3. Port festlegen.
  4. Sicherheitsoption festlegen.

Das folgende Code‑Snippet zeigt, wie Sie sich mit einem SSL‑aktivierten SMTP‑Server verbinden.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

SmtpClient client = new SmtpClient("smtp.gmail.com");

// Set username, password, port, and security options
client.setUsername("your.email@gmail.com");
client.setPassword("your.password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);

Verbindung zu einem Server über SOCKS‑Proxy‑Server herstellen

Manchmal verwenden wir Proxy‑Server für die Kommunikation mit der Außenwelt. 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. Dieser Artikel bietet ein funktionierendes Beispiel für das Senden von E‑Mails über einen Proxy‑Mail‑Server. So senden Sie eine E‑Mail über einen Proxy‑Server:

  1. Initialisieren Sie den Proxy mit den erforderlichen Informationen, d. h. Proxy‑Adresse, Port und SOCKS‑Version.
  2. Initialisieren SmtpClient mit der Host‑Adresse, dem Benutzernamen und Passwort sowie weiteren Einstellungen.
  3. 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.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

SmtpClient client = new SmtpClient("smtp.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.SSLImplicit);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
client.setProxy(proxy);
client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
        "Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));

Verbindung zu einem Server über HTTP‑Proxy‑Server herstellen

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

HttpProxy proxy = new HttpProxy("18.222.124.59", 8080);
try (SmtpClient client = new SmtpClient("host", 587, "username", "password")) {
    client.setProxy(proxy);
    client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
            "Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));
}

Authentifizierungsmechanismus anpassen

Rufen Sie die Liste der vom SMTP‑Server unterstützten Authentifizierungsmechanismen ab, indem Sie die getSupportedAuthentication Methode des SmtpClient Klasse. Diese Methode ermöglicht es dem Client zu bestimmen, welche Authentifizierungsmethoden für den Aufbau einer sicheren Verbindung mit dem Server verfügbar sind. Anschließend kann mit der setAllowedAuthentication Methode, die die Aufzählung der vom Benutzer zulässigen Authentifizierungstypen abruft (oder setzt), um den am besten geeigneten Authentifizierungsmechanismus für die Client‑Server‑Kommunikation auszuwählen. Damit können Sie die Authentifizierungsmethode für den Mail‑Client explizit festlegen.

Das folgende Code‑Beispiel zeigt, wie die Authentifizierung des E‑Mail‑Clients angepasst wird:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);

CRAM‑MD5‑Authentifizierung zum Verbinden mit einem Server verwenden

Um eine sichere Authentifizierung und Kommunikation mit dem SMTP‑Server zu gewährleisten, können Sie die Verwendung von CRAM‑MD5 als zulässige Authentifizierungsmethode für den SMTP‑Client festlegen und erzwingen. Das folgende Code‑Snippet zeigt, wie der zulässige Authentifizierungstyp für den SmtpClient:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);

SMTP‑Client an bestimmte IP‑Adresse auf dem Host 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.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

SmtpClient client = new SmtpClient("smtp.domain.com", // host
        587, // port
        "username", // username
        "password", // password
        SecurityOptions.Auto // Security Options
);
try {
    client.bindIPEndPoint(new BindIPEndPointHandler() {
        public InetSocketAddress invoke(InetSocketAddress remoteEndPoint) {
            return new InetSocketAddress(0);
        }
    });
    client.noop();
} finally {
    client.dispose();
}

Mail‑Server-Anmeldeinformationen ohne Senden einer E‑Mail validieren

Manchmal ist es notwendig, Anmeldeinformationen zu überprüfen, ohne eine E‑Mail zu senden. Aspose.Email bietet die validateCredentials() Methode, um diesen Vorgang auszuführen. Wenn die Validierung erfolgreich ist, wird der Code innerhalb der if‑Anweisung ausgeführt, typischerweise um weitere Aktionen durchzuführen oder Daten vom IMAP‑Server abzurufen. Das folgende Code‑Snippet demonstriert die Validierung von Anmeldeinformationen ohne eine E‑Mail zu senden:

try (SmtpClient smtpClient = new SmtpClient(
        server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto)) {
    smtpClient.setTimeout(4000);

    if (smtpClient.validateCredentials()) {
        // to do something
    }
}

Wie man einen Timeout für E‑Mail‑Operationen festlegt

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 setzen, um lange Wartezeiten in Ihrer Anwendung zu vermeiden.

try (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
    smtpClient.setTimeout(60000); // 60 seconds

    // some code...
}