Verbinden met IMAP‑server
De ImapClient klasse stelt applicaties in staat IMAP‑mailboxes te beheren met het IMAP‑protocol. De ImapClient klasse wordt gebruikt om verbinding te maken met IMAP‑mailservers en e‑mails te beheren in IMAP‑mailmappen. Om verbinding te maken met een IMAP‑server
- Maak een instantie van de ImapClient klasse.
- Specificeer de hostnaam, gebruikersnaam en wachtwoord in de ImapClient‑constructor.
Zodra de ImapClient De instantie wordt geïnitialiseerd; de volgende oproep tot een bewerking met deze instantie zal verbinding maken met de server. Het onderstaande codefragment toont hoe u met de bovenstaande stappen verbinding maakt met een IMAP‑server.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an imapclient with host, user and password
ImapClient client = new ImapClient("localhost", "user", "password");
Verbinden met SSL‑ingeschakelde IMAP‑server
Verbinden met IMAP‑server beschrijft hoe u in vier eenvoudige stappen verbinding maakt met een IMAP‑server:
- Maak een instantie van de ImapClient klasse.
- Specificeer de hostnaam, gebruikersnaam en wachtwoord.
- Specificeer de poort.
- Specificeer de Beveiligingsopties.
Het proces om verbinding te maken met een SSL‑ingeschakelde IMAP‑server is vergelijkbaar, maar vereist dat u nog enkele eigenschappen instelt:
- Instellen Beveiligingsopties naar SSLImplicit.
Het onderstaande codefragment toont hoe u
- Stel een gebruikersnaam, wachtwoord en poort in.
- Stel beveiligingsoptie in.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the ImapClient class
ImapClient client = new ImapClient("imap.domain.com", 993, "user@domain.com", "pwd");
// Set the security mode to implicit
client.setSecurityOptions(SecurityOptions.SSLImplicit);
Verbinden met server via proxy
Proxy‑servers worden vaak gebruikt om met de buitenwereld te communiceren. In zulke gevallen kunnen mailclients niet via internet communiceren zonder het proxy‑adres op te geven. Aspose.Email ondersteunt de SOCKS‑proxy‑protocolversies 4, 4a en 5. Dit artikel geeft een werkend voorbeeld voor het benaderen van een mailbox via een proxy‑mailserver. Om de mailbox via een proxy‑server te benaderen:
- Initialiseren SocksProxy met de vereiste informatie, namelijk proxy‑adres, poort en SOCKS‑versie.
- Initialiseren ImapClient met host‑adres, gebruikersnaam, wachtwoord en eventuele andere instellingen.
- Stel de client in SocksProxy eigenschap aan de SocksProxy object hierboven aangemaakt.
Het onderstaande codefragment toont hoe u een mailbox via een proxy‑server kunt ophalen.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to IMAP and set SecurityOptions
ImapClient client = new ImapClient("imap.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
// Set the proxy
client.setProxy(proxy);
try {
client.selectFolder("Inbox");
} catch (java.lang.RuntimeException ex) {
System.out.println(ex.getMessage());
}
Verbinden met Server via HTTP‑Proxy
// 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);
final ImapClient client = new ImapClient("imap.domain.com", "username", "password");
try {
client.setProxy(proxy);
client.selectFolder("Inbox");
} finally {
if (client != null)
client.dispose();
}
Authenticatiemechanisme aanpassen
Haal de lijst met authenticatiemechanismen op die ondersteund worden door de IMAP‑server met behulp van de getSupportedAuthentication methode van de ImapClient 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:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);
Verbinden met Server in Alleen‑Lezen Modus
De ImapClient klasse biedt een ReadOnly eigenschap die, wanneer ingesteld op true, aangeeft dat er geen wijzigingen mogen worden aangebracht in de permanente staat van de mailbox. Het volgende codevoorbeeld demonstreert het gebruik van ImapClient.ReadOnly eigenschap. Deze haalt het aantal ongelezen berichten op, haalt vervolgens één bericht op en haalt daarna opnieuw het aantal ongelezen berichten op in alleen‑lezen modus. Het aantal ongelezen berichten blijft gelijk, wat aangeeft dat de permanente staat van de mailbox niet is veranderd.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
ImapClient imapClient = new ImapClient();
imapClient.setHost("<HOST>");
imapClient.setPort(993);
imapClient.setUsername("<USERNAME>");
imapClient.setPassword("<PASSWORD>");
imapClient.setSupportedEncryption(EncryptionProtocols.Tls);
imapClient.setSecurityOptions(SecurityOptions.SSLImplicit);
ImapQueryBuilder imapQueryBuilder = new ImapQueryBuilder();
imapQueryBuilder.hasNoFlags(ImapMessageFlags.isRead()); /* get unread messages. */
MailQuery query = imapQueryBuilder.getQuery();
imapClient.setReadOnly(true);
imapClient.selectFolder("Inbox");
ImapMessageInfoCollection messageInfoCol = imapClient.listMessages(query);
System.out.println("Initial Unread Count: " + messageInfoCol.size());
if (messageInfoCol.size() > 0) {
imapClient.fetchMessage(messageInfoCol.get_Item(0).getSequenceNumber());
messageInfoCol = imapClient.listMessages(query);
// This count will be equal to the initial count
System.out.println("Updated Unread Count: " + messageInfoCol.size());
} else {
System.out.println("No unread messages found");
}
CRAM-MD5-authenticatie gebruiken om verbinding te maken met een server
Om veilige authenticatie en communicatie met de IMAP‑server te waarborgen, kunt u het gebruik van CRAM‑MD5 als toegestaan authenticatiemethode voor de IMAP‑client specificeren en afdwingen. Het onderstaande codefragment toont hoe het toegestane authenticatietype te configureren voor de ImapClient:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);
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 (ImapClient imapClient = new ImapClient(
server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
imapClient.setTimeout(4000);
if (imapClient.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 (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.setTimeout(60000); // 60 seconds
// some code...
}
Hoe Greeting Timeout Beperken
De IMAP‑client kan de automatische modus gebruiken om een verbinding tot stand te brengen. In deze modus doorloopt de IMAP‑client alle mogelijke verbindingsparameters totdat de verbinding tot stand is gebracht. Een IMAP‑server stuurt bij een correcte verbinding een begroetings‑string naar de client. Servers kunnen een impliciete of expliciete (START TLS) SSL/TLS‑verbinding initiëren. Als de verbindingsmodus niet overeenkomt (bijvoorbeeld wanneer de server wacht op een impliciete SSL‑verbinding maar de client een niet‑beveiligde of expliciete SSL‑verbinding probeert tot stand te brengen), zal de server geen begroetings‑string sturen en moet de gebruiker lang wachten tot de time‑out een begroetings‑string bereikt, waarna de client de volgende verbindingsoptie probeert. Om dit probleem te voorkomen is GreetingTimeout geïntroduceerd. Deze eigenschap stelt u in staat de time‑out voor de begroetings‑string in te stellen en de tijd voor automatische verbindingsopbouw te verkorten.
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);