Connessione al server IMAP
Il ImapClient la classe permette alle applicazioni di gestire caselle di posta IMAP usando il protocollo IMAP. Il ImapClient la classe è usata per connettersi a server di posta IMAP e gestire le email nelle cartelle IMAP. Per connettersi a un server IMAP
- Crea un’istanza di ImapClient classe.
- Specifica hostname, nome utente e password nel Costruttore ImapClient.
Una volta che ImapClient l’istanza è avviata, la successiva chiamata a qualsiasi operazione usando questa istanza connetterà al server. Il seguente frammento di codice mostra come connettersi a un server IMAP usando i passaggi sopra.
// 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");
Connessione con Server IMAP con SSL Abilitato
Connessione con Server IMAP descritto come connettersi a un server IMAP in quattro semplici passaggi:
- Crea un’istanza di ImapClient classe.
- Specifica hostname, nome utente e password.
- Specifica la porta.
- Specificare il Opzioni di Sicurezza.
Il processo per connettersi a un server IMAP con SSL abilitato è simile ma richiede di impostare alcune altre proprietà:
- Imposta Opzioni di Sicurezza a SSLImplicit.
Il seguente frammento di codice mostra come
- Imposta nome utente, password e porta.
- Imposta l’opzione di sicurezza.
// 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);
Connessione al server tramite proxy
I server proxy sono comunemente usati per comunicare con l’esterno. In questi casi, i client di posta non possono comunicare su Internet senza specificare l’indirizzo del proxy. Aspose.Email supporta le versioni 4, 4a e 5 del protocollo proxy SOCKS. Questo articolo fornisce un esempio funzionante di accesso alla casella di posta usando un server proxy di posta. Per accedere alla casella tramite un server proxy:
- Inizializza SocksProxy con le informazioni richieste, ovvero indirizzo proxy, porta e versione SOCKS.
- Inizializza ImapClient con l’indirizzo host, nome utente, password e eventuali altre impostazioni.
- Imposta il client SocksProxy proprietà al SocksProxy oggetto creato sopra.
Il seguente frammento di codice mostra come recuperare la casella di posta tramite un server proxy.
// 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());
}
Connessione al server tramite 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);
final ImapClient client = new ImapClient("imap.domain.com", "username", "password");
try {
client.setProxy(proxy);
client.selectFolder("Inbox");
} finally {
if (client != null)
client.dispose();
}
Personalizza il meccanismo di autenticazione
Recupera l’elenco dei meccanismi di autenticazione supportati dal server IMAP usando il getSupportedAuthentication metodo del ImapClient classe. Questo metodo consente al client di determinare quali metodi di autenticazione sono disponibili per stabilire una connessione sicura con il server. Quindi, usando il setAllowedAuthentication metodo che ottiene (o imposta) l’enumerazione dei tipi di autenticazione consentiti dall’utente, scegliendo il meccanismo di autenticazione più appropriato per la comunicazione client‑server. Questo consente di impostare esplicitamente il metodo di autenticazione per il client di posta.
Il seguente esempio di codice mostra come personalizzare l’autenticazione del client email:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);
Connessione al server in modalità solo lettura
Il ImapClient la classe fornisce un ReadOnly proprietà che, quando impostata su true, indica che non devono essere apportate modifiche allo stato permanente della casella di posta. Il seguente esempio di codice dimostra l’uso di ImapClient.ReadOnly proprietà. Ottiene il conteggio dei messaggi non letti, poi recupera un messaggio e poi ottiene nuovamente il conteggio dei messaggi non letti in modalità di sola lettura. Il conteggio dei messaggi non letti rimane lo stesso, indicando che lo stato permanente della casella di posta non è stato modificato.
// 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");
}
Utilizzare l’autenticazione CRAM-MD5 per connettersi a un server
Per garantire un’autenticazione e una comunicazione sicure con il server IMAP, è possibile specificare e imporre l’uso di CRAM-MD5 come metodo di autenticazione consentito per il client IMAP. Il seguente frammento di codice mostra come configurare il tipo di autenticazione consentito per il ImapClient:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);
Convalida Credenziali del Server Mail senza Inviare Email
A volte è necessario verificare le credenziali senza inviare un’email. Aspose.Email fornisce il validateCredentials() metodo per eseguire questa operazione. Se la validazione ha successo, il codice all’interno dell’if viene eseguito, tipicamente usato per eseguire ulteriori azioni o recuperare dati dal server IMAP. Il seguente snippet di codice dimostra la validazione delle credenziali senza inviare un’email:
try (ImapClient imapClient = new ImapClient(
server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
imapClient.setTimeout(4000);
if (imapClient.validateCredentials()) {
// to do something
}
}
Come Impostare il Timeout per le Operazioni di Posta
Ogni operazione di posta richiede del tempo a seconda di molti fattori (ritardi di rete, dimensione dei dati, performance del server, ecc.). Puoi impostare un timeout per tutte le operazioni di posta. L’esempio di codice qui sotto mostra come farlo usando il Timeout proprietà. Nota: non dovresti impostare valori grandi per evitare lunghe attese nella tua applicazione.
try (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.setTimeout(60000); // 60 seconds
// some code...
}
Come Limitare il Timeout di Saluto
Il client IMAP può utilizzare la modalità automatica per stabilire una connessione. In questa modalità, il client IMAP attraversa tutti i possibili parametri di connessione fino a quando la connessione viene stabilita. Un server IMAP, in caso di connessione corretta, invia una stringa di benvenuto al client. I server possono utilizzare avvio di connessione SSL/TLS implicito o esplicito (START TLS). Se la modalità di connessione è incompatibile (ad esempio, il server attende una connessione SSL implicita ma il client tenta di stabilire una connessione non sicura o SSL esplicita), il server non invierà la stringa di benvenuto e l’utente attenderà a lungo fino al timeout, dopodiché il client passa all’opzione di connessione successiva. Per evitare questo problema, è stato introdotto GreetingTimeout. Questa proprietà consente di impostare il timeout per la stringa di benvenuto e ridurre il tempo di stabilimento automatico della connessione.
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);