Verbinden met SMTP‑server
De volgende eigenschappen moeten worden ingesteld bij het verbinden met een SMTP‑server met SSL‑ondersteuning.
- SecurityOptions
- Poort
In de onderstaande voorbeelden laten we zien hoe u:
- Stel een gebruikersnaam in.
- Stel een wachtwoord in.
- Stel de poort in.
- Stel beveiligingsoptie in.
Het volgende codefragment toont hoe u een SSL‑ingeschakelde SMTP‑server kunt 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);
Verbinden met server via SOCKS-proxyserver
Soms gebruiken we proxyservers om met de buitenwereld te communiceren. In zulke gevallen kunnen e‑mailclients niet via internet communiceren zonder het proxy‑adres op te geven. Aspose.Email ondersteunt de versies 4, 4a en 5 van het SOCKS‑proxy‑protocol. Dit artikel biedt een werkend voorbeeld van het verzenden van e‑mail via een proxy‑mailserver. Om een e‑mail te verzenden via een proxy‑server:
- Initialiseer Proxy met de vereiste informatie, namelijk proxy‑adres, poort en SOCKS‑versie.
- Initialiseren SmtpClient met het hostadres, gebruikersnaam en wachtwoord, en eventuele andere instellingen.
- Stel de Proxy-eigenschap van de client in op de Proxy object eerder aangemaakt.
Het volgende codefragment toont hoe u via een proxyserver verbinding maakt met een 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)"));
Verbinden met server via HTTP-proxyserver
// 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)"));
}
Authenticatiemechanisme aanpassen
Haal de lijst op van authenticatiemechanismen die door de SMTP-server worden ondersteund met behulp van de getSupportedAuthentication methode van de SmtpClient klasse. Deze methode stelt de client in staat te bepalen welke authenticatiemethoden beschikbaar zijn voor het tot stand brengen van een beveiligde verbinding met de server. Vervolgens, met behulp van de setAllowedAuthentication methode die (of de) enumeratie van door de gebruiker toegestane authenticatietypen ophaalt (of instelt), kies het meest geschikte authenticatiemechanisme voor de client‑servercommunicatie. Hiermee kunt u de authenticatiemethode voor de e‑mailclient expliciet instellen.
Het volgende codevoorbeeld laat zien hoe u de authenticatie van de e‑mailclient kunt aanpassen:
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);
CRAM-MD5-authenticatie gebruiken om verbinding te maken met een server
Om veilige authenticatie en communicatie met de SMTP-server te waarborgen, kunt u het gebruik van CRAM-MD5 opgeven en afdwingen als toegestane authenticatiemethode voor de SMTP-client. Het volgende codefragment toont hoe u het toegestane authenticatietype configureert voor de SmtpClient:
smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);
SMTP-client binden aan specifiek IP-adres op host
De mogelijkheid dat een host meerdere poorten beschikbaar heeft voor het verzenden van e‑mail kan niet worden uitgesloten. In zulke gevallen kan het nodig zijn om de e‑mailverzendclient te binden aan een specifieke poort op de host. Dit kan tevens worden bereikt met de Aspose.Email API door gebruik te maken van de SmtpClient bindIPEndPoint eigenschap. De API SmtpClient kan worden ingesteld om een specifiek IP-adres op de host te gebruiken door het specifieke IP-eindpunt op te geven. De volgende codefragment toont hoe u de SMTP-client bindt aan een specifiek IP-adres op de host.
// 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();
}
Mailserver‑inloggegevens valideren zonder e‑mail te verzenden
Soms is het nodig inloggegevens te verifiëren zonder een e‑mail te verzenden. Aspose.Email biedt de validateCredentials() methode om deze bewerking uit te voeren. Als de validatie slaagt, wordt de code binnen de if‑statement uitgevoerd, gewoonlijk gebruikt om verdere acties uit te voeren of gegevens van de IMAP‑server op te halen. Het volgende codefragment toont de validatie van inloggegevens zonder een e‑mail te verzenden:
try (SmtpClient smtpClient = new SmtpClient(
server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto)) {
smtpClient.setTimeout(4000);
if (smtpClient.validateCredentials()) {
// to do something
}
}
Time‑out instellen voor e‑mailbewerkingen
Elke e‑mailbewerking kost tijd, afhankelijk van veel factoren (netwerkvertragingen, datagrootte, serverprestaties, enz.). U kunt een time‑out instellen voor alle e‑mailbewerkingen. Het code‑voorbeeld hieronder laat zien hoe u dat doet met behulp van de Time‑out eigenschap. Opmerking: u moet geen grote waarden instellen om lange wachttijden in uw applicatie te voorkomen.
try (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.setTimeout(60000); // 60 seconds
// some code...
}