Łączenie z serwerem SMTP
Poniższe właściwości muszą być ustawione przy łączeniu z serwerem SMTP obsługującym SSL.
- SecurityOptions
- Port
W poniższych przykładach pokazujemy, jak:
- Ustaw nazwę użytkownika.
- Ustaw hasło.
- Ustaw port.
- Ustaw opcję bezpieczeństwa.
Poniższy fragment kodu pokazuje, jak połączyć się z serwerem SMTP z włączonym 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);
Łączenie z serwerem przez proxy SOCKS
Czasami używamy serwerów proxy do komunikacji ze światem zewnętrznym. W takich przypadkach klienci poczty nie mogą komunikować się przez Internet bez podania adresu proxy. Aspose.Email obsługuje wersje 4, 4a i 5 protokołu SOCKS proxy. Ten artykuł zawiera działający przykład wysyłania e‑maili przy użyciu serwera proxy poczty. Aby wysłać e‑mail przez serwer proxy:
- Zainicjuj proxy, podając wymagane informacje, czyli adres proxy, port i wersję SOCKS.
- Inicjalizuj SmtpClient z adresem hosta, nazwą użytkownika i hasłem oraz innymi ustawieniami.
- Ustaw właściwość Proxy klienta na Proxy obiekt utworzony wcześniej.
Poniższy fragment kodu pokazuje, jak połączyć się z serwerem przez serwer proxy.
// 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)"));
Łączenie z serwerem przez serwer proxy HTTP
// 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)"));
}
Dostosuj mechanizm uwierzytelniania
Pobierz listę mechanizmów uwierzytelniania obsługiwanych przez serwer SMTP przy użyciu getSupportedAuthentication metoda SmtpClient klasa. Ta metoda pozwala klientowi określić, które metody uwierzytelniania są dostępne do ustanowienia bezpiecznego połączenia z serwerem. Następnie, używając setAllowedAuthentication metoda, która pobiera (lub ustawia) wyliczenie typów uwierzytelniania dozwolonych przez użytkownika, wybierz najbardziej odpowiedni mechanizm uwierzytelniania dla komunikacji klient‑serwer. Umożliwia to explicite ustawienie metody uwierzytelniania dla klienta poczty.
Poniższy przykład kodu pokazuje, jak dostosować uwierzytelnianie klienta e‑mail:
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);
Użycie uwierzytelniania CRAM-MD5 do połączenia z serwerem
Aby zapewnić bezpieczne uwierzytelnianie i komunikację z serwerem SMTP, możesz określić i wymusić użycie CRAM-MD5 jako dopuszczalnej metody uwierzytelniania dla klienta SMTP. Poniższy fragment kodu pokazuje, jak skonfigurować dopuszczalny typ uwierzytelniania dla SmtpClient:
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);
Powiąż klienta SMTP z określonym adresem IP na hoście
Możliwość, że host ma dostępnych wiele portów do wysyłania e‑maili, nie może być wykluczona. W takich przypadkach może powstać potrzeba powiązania klienta wysyłającego e‑maile z konkretnym portem na hoście. Można to osiągnąć również przy użyciu Aspose.Email API za pomocą SmtpClient bindIPEndPoint właściwość. API SmtpClient można ustawić, aby używać określonego adresu IP na hoście poprzez podanie konkretnego punktu końcowego IP. Poniższy fragment kodu pokazuje, jak powiązać klienta SMTP z określonym adresem IP na hoście.
// 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();
}
Weryfikacja poświadczeń serwera poczty bez wysyłania e‑maila
Czasami konieczne jest zweryfikowanie poświadczeń bez wysyłania e‑maila. Aspose.Email zapewnia validateCredentials() metoda służąca do wykonania tej operacji. Jeśli weryfikacja zakończy się sukcesem, kod wewnątrz instrukcji if zostaje wykonany, zwykle używany do dalszych działań lub pobierania danych z serwera IMAP. Poniższy fragment kodu demonstruje weryfikację poświadczeń bez wysyłania e‑maila:
try (SmtpClient smtpClient = new SmtpClient(
server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto)) {
smtpClient.setTimeout(4000);
if (smtpClient.validateCredentials()) {
// to do something
}
}
Jak ustawić limit czasu dla operacji e‑mail
Każda operacja e‑mail zajmuje pewien czas w zależności od wielu czynników (opóźnienia sieciowe, rozmiar danych, wydajność serwera itp.). Możesz ustawić limit czasu dla wszystkich operacji e‑mail. Poniższy przykład kodu pokazuje, jak to zrobić przy użyciu Limit czasu właściwość. Uwaga: nie należy ustawiać dużych wartości, aby uniknąć długiego oczekiwania w aplikacji.
try (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.setTimeout(60000); // 60 seconds
// some code...
}