Připojení k SMTP serveru
Následující vlastnosti je třeba nastavit při připojení k SMTP serveru s podporou SSL.
- SecurityOptions
- Port
V níže uvedených příkladech ukazujeme, jak:
- Nastavte uživatelské jméno.
- Nastavte heslo.
- Nastavte port.
- Nastavte volbu zabezpečení.
Následující úryvek kódu ukazuje, jak se připojit k SMTP serveru s povoleným SSL.
// 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);
Připojení k serveru přes SOCKS proxy server
Někdy používáme proxy servery pro komunikaci s vnějším světem. V takových případech e‑mailoví klienti nemohou komunikovat přes Internet bez zadání adresy proxy. Aspose.Email poskytuje podporu pro verze 4, 4a a 5 protokolu SOCKS proxy. Tento článek poskytuje funkční příklad odesílání e‑mailu pomocí proxy poštovního serveru. Pro odeslání e‑mailu přes proxy server:
- Inicializujte proxy s požadovanými informacemi, tj. adresou proxy, portem a verzí SOCKS.
- Inicializovat SmtpClient s adresou hostitele, uživatelským jménem a heslem a dalšími nastaveními.
- Nastavte vlastnost Proxy klienta na Proxy objekt vytvořený dříve.
Následující úryvek kódu ukazuje, jak se připojit k serveru přes proxy server.
// 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)"));
Připojení k serveru přes HTTP proxy server
// 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)"));
}
Přizpůsobení autentizačního mechanismu
Získat seznam autentizačních mechanismů, které SMTP server podporuje, pomocí getSupportedAuthentication metoda třídy SmtpClient třída. Tato metoda umožňuje klientovi zjistit, které autentizační metody jsou k dispozici pro navázání zabezpečeného spojení se serverem. Pak, pomocí setAllowedAuthentication metoda, která získá (nebo nastaví) výčet typů autentizace povolených uživatelem, vyberte nejvhodnější autentizační mechanismus pro komunikaci klient‑server. To vám umožní explicitně nastavit autentizační metodu pro e‑mailový klient.
Následující ukázka kódu ukazuje, jak přizpůsobit autentizaci e‑mailového klienta:
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);
Použití autentizace CRAM-MD5 pro připojení k serveru
Aby byla zajištěna bezpečná autentizace a komunikace se SMTP serverem, můžete určit a vynutit použití CRAM-MD5 jako povolené autentizační metody pro SMTP klienta. Následující úryvek kódu ukazuje, jak nakonfigurovat povolený typ autentizace pro SmtpClient:
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);
Navázat SMTP klienta na konkrétní IP adresu na hostiteli
Možnost, že hostitel má k dispozici více portů pro odesílání e‑mailů, nelze vyloučit. V takových případech může vzniknout požadavek navázat klient odesílající e‑mail na konkrétní port na hostiteli. To lze dosáhnout také pomocí Aspose.Email API pomocí SmtpClient bindIPEndPoint vlastnost. API SmtpClient lze nastavit tak, aby používal konkrétní IP adresu na hostiteli zadáním konkrétního IP koncového bodu. Následující úryvek kódu ukazuje, jak připojit SMTP klienta ke konkrétní IP adrese na hostiteli.
// 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();
}
Ověření přihlašovacích údajů poštovního serveru bez odeslání e‑mailu
Někdy je nutné ověřit přihlašovací údaje bez odeslání e‑mailu. Aspose.Email poskytuje validateCredentials() metoda k provedení této operace. Pokud je ověření úspěšné, kód v bloku if se vykoná, typicky se používá k dalším akcím nebo načtení dat ze serveru IMAP. Následující úryvek kódu demonstruje ověření přihlašovacích údajů bez odeslání e‑mailu:
try (SmtpClient smtpClient = new SmtpClient(
server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto)) {
smtpClient.setTimeout(4000);
if (smtpClient.validateCredentials()) {
// to do something
}
}
Jak nastavit časový limit pro operace s poštou
Každá operace s poštou trvá určitý čas v závislosti na mnoha faktorech (zpoždění sítě, velikost dat, výkonnost serveru atd.). Můžete nastavit časový limit pro všechny operace s poštou. Níže uvedený příklad kódu ukazuje, jak to provést pomocí Časový limit vlastnost. Poznámka: neměli byste nastavovat velké hodnoty, aby nedocházelo k dlouhému čekání ve vaší aplikaci.
try (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.setTimeout(60000); // 60 seconds
// some code...
}