Připojení k IMAP serveru
The ImapClient třída umožňuje aplikacím spravovat IMAP poštovní schránky pomocí protokolu IMAP. ImapClient třída se používá pro připojení k IMAP poštovním serverům a správu e‑mailů ve složkách IMAP. Pro připojení k IMAP serveru
- Vytvořte instanci ImapClient třída.
- Zadejte název hostitele, uživatelské jméno a heslo v ImapClient constructor.
Jakmile ImapClient instance je inicializována, další volání jakékoli operace s touto instancí se připojí k serveru. Následující úryvek kódu ukazuje, jak se připojit k IMAP serveru pomocí výše uvedených kroků.
// 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");
Připojení k IMAP serveru s povoleným SSL
Připojení k IMAP serveru popisuje, jak se připojit k IMAP serveru ve čtyřech jednoduchých krocích:
- Vytvořte instanci ImapClient třída.
- Zadejte název hostitele, uživatelské jméno a heslo.
- Zadejte port.
- Určete Bezpečnostní možnosti.
Proces připojení k IMAP serveru s povoleným SSL je podobný, ale vyžaduje nastavení několika dalších vlastností:
- Nastavit Bezpečnostní možnosti na SSLImplicit.
Následující úryvek kódu ukazuje, jak
- Nastavte uživatelské jméno, heslo a port.
- Nastavte volbu zabezpečení.
// 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);
Připojení k serveru přes proxy
Proxy servery se běžně používají pro komunikaci s vnějším světem. V takových případech poštovní klienti nemohou komunikovat přes internet bez zadání adresy proxy. Aspose.Email podporuje verze 4, 4a a 5 protokolu SOCKS proxy. Tento článek poskytuje funkční ukázku přístupu ke schránce pomocí proxy poštovního serveru. Pro přístup ke schránce přes proxy server:
- Inicializovat SocksProxy s požadovanými informacemi, tj. adresou proxy, portem a verzí SOCKS.
- Inicializovat ImapClient s adresou hostitele, uživatelským jménem, heslem a dalšími nastaveními.
- Nastavit klienta SocksProxy vlastnost do SocksProxy objekt vytvořený výše.
Následující úryvek kódu ukazuje, jak získat poštovní schránku přes proxy server.
// 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());
}
Připojení k serveru přes 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();
}
Přizpůsobení autentizačního mechanismu
Získat seznam autentizačních mechanismů podporovaných IMAP serverem pomocí getSupportedAuthentication metoda třídy ImapClient 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:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);
Připojení k serveru v režimu pouze pro čtení
The ImapClient třída poskytuje ReadOnly vlastnost, která při nastavení na true znamená, že se nemají provádět žádné změny v trvalém stavu poštovní schránky. Následující ukázkový kód demonstruje použití ImapClient.ReadOnly vlastnost. Získá počet nepřečtených zpráv, poté načte jednu zprávu a znovu získá počet nepřečtených zpráv v režimu jen pro čtení. Počet nepřečtených zpráv zůstane stejný, což naznačuje, že trvalý stav poštovní schránky nebyl změněn.
// 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");
}
Použití autentizace CRAM-MD5 pro připojení k serveru
Pro zajištění bezpečné autentizace a komunikace s IMAP serverem můžete určit a vynutit používání CRAM-MD5 jako povolené metody autentizace pro IMAP klienta. Následující úryvek kódu ukazuje, jak nastavit povolený typ autentizace pro ImapClient:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);
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 (ImapClient imapClient = new ImapClient(
server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
imapClient.setTimeout(4000);
if (imapClient.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 (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.setTimeout(60000); // 60 seconds
// some code...
}
Jak omezit časový limit uvítacího řetězce
IMAP klient může použít automatický režim pro navázání spojení. V tomto režimu prochází všechny možné parametry připojení, dokud není spojení navázáno. V případě úspěšného připojení pošle IMAP server uvítací řetězec klientovi. Servery mohou použít implicitní nebo explicitní (START TLS) iniciaci SSL/TLS spojení. Pokud je režim připojení nesprávný (např. server čeká na implicitní SSL spojení, ale klient se snaží navázat nešifrované nebo explicitní SSL spojení), server nepošle uvítací řetězec a uživatel bude dlouho čekat, dokud neuplyne časový limit, a klient přejde na další možnost připojení. Pro vyřešení tohoto problému byl zaveden parametr GreetingTimeout. Tato vlastnost umožňuje nastavit časový limit pro uvítací řetězec a zkrátit dobu automatického navazování spojení.
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);