Connexion au serveur IMAP
Le ImapClient la classe permet aux applications de gérer les boîtes aux lettres IMAP en utilisant le protocole IMAP. Le ImapClient la classe est utilisée pour se connecter aux serveurs de messagerie IMAP et gérer les courriels dans les dossiers IMAP. Pour se connecter à un serveur IMAP
- Créez une instance de la ImapClient classe.
- Spécifier le nom d’hôte, le nom d’utilisateur et le mot de passe dans le Constructeur ImapClient.
Une fois le ImapClient l’instance est initiée, le prochain appel à toute opération utilisant cette instance se connectera au serveur. Le fragment de code suivant vous montre comment se connecter à un serveur IMAP en suivant les étapes ci‑dessus.
// 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");
Connexion avec un serveur IMAP avec SSL activé
Connexion avec le serveur IMAP décrit comment se connecter à un serveur IMAP en quatre étapes simples :
- Créez une instance de la ImapClient classe.
- Spécifier le nom d’hôte, le nom d’utilisateur et le mot de passe.
- Spécifier le port.
- Spécifiez le Options de sécurité.
Le processus de connexion à un serveur IMAP avec SSL activé est similaire mais nécessite de définir quelques propriétés supplémentaires :
- Définir Options de sécurité vers SSLImplicit.
Le fragment de code suivant montre comment
- Définir un nom d’utilisateur, un mot de passe et le port.
- Définir l’option de sécurité.
// 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);
Connexion au serveur via un proxy
Les serveurs proxy sont couramment utilisés pour communiquer avec l’extérieur. Dans ces cas, les clients de messagerie ne peuvent pas communiquer sur Internet sans spécifier l’adresse du proxy. Aspose.Email prend en charge les versions 4, 4a et 5 du protocole proxy SOCKS. Cet article fournit un exemple fonctionnel d’accès à la boîte aux lettres en utilisant un serveur proxy de messagerie. Pour accéder à la boîte aux lettres via un serveur proxy :
- Initialiser SocksProxy avec les informations requises, c’est-à-dire l’adresse du proxy, le port et la version SOCKS.
- Initialiser ImapClient avec l’adresse de l’hôte, le nom d’utilisateur, le mot de passe et tout autre paramètre.
- Définir le client SocksProxy propriété au SocksProxy objet créé ci‑dessus.
Le fragment de code suivant vous montre comment récupérer une boîte aux lettres via un serveur 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());
}
Connexion au serveur via 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();
}
Personnaliser le mécanisme d’authentification
Récupérer la liste des mécanismes d’authentification supportés par le serveur IMAP en utilisant le getSupportedAuthentication méthode du ImapClient classe. Cette méthode permet au client de déterminer quelles méthodes d’authentification sont disponibles pour établir une connexion sécurisée avec le serveur. Ensuite, en utilisant le setAllowedAuthentication méthode qui obtient (ou définit) l’énumération des types d’authentification autorisés par l’utilisateur, choisissez le mécanisme d’authentification le plus approprié pour la communication client-serveur. Cela vous permet de définir explicitement la méthode d’authentification pour le client de messagerie.
L’exemple de code suivant montre comment personnaliser l’authentification du client e-mail :
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);
Connexion au serveur en mode lecture seule
Le ImapClient la classe fournit un ReadOnly propriété qui, lorsqu’elle est définie sur true, indique qu’aucune modification ne doit être apportée à l’état permanent de la boîte aux lettres. L’exemple de code suivant montre l’utilisation de ImapClient.ReadOnly propriété. Elle obtient le nombre de messages non lus, récupère ensuite un message puis obtient à nouveau le nombre de messages non lus en mode lecture seule. Le nombre de messages non lus reste le même, indiquant que l’état permanent de la boîte aux lettres n’a pas été modifié.
// 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");
}
Utilisation de l’authentification CRAM-MD5 pour se connecter à un serveur
Pour garantir une authentification et une communication sécurisées avec le serveur IMAP, vous pouvez spécifier et imposer l’utilisation de CRAM-MD5 comme méthode d’authentification autorisée pour le client IMAP. Le fragment de code suivant montre comment configurer le type d’authentification autorisé pour le ImapClient:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);
Valider les informations d’identification du serveur de messagerie sans envoyer d’e‑mail
Parfois, il est nécessaire de vérifier les informations d’identification sans envoyer d’e‑mail. Aspose.Email fournit le validateCredentials() méthode pour effectuer cette opération. Si la validation réussit, le code à l’intérieur de l’instruction if est exécuté, généralement utilisé pour effectuer d’autres actions ou récupérer des données du serveur IMAP. Le fragment de code suivant montre la validation des informations d’identification sans envoyer d’e‑mail :
try (ImapClient imapClient = new ImapClient(
server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
imapClient.setTimeout(4000);
if (imapClient.validateCredentials()) {
// to do something
}
}
Comment définir un délai d’attente pour les opérations de messagerie
Chaque opération de messagerie prend du temps en fonction de nombreux facteurs (délais réseau, taille des données, performance du serveur, etc.). Vous pouvez définir un délai d’attente pour toutes les opérations de messagerie. L’exemple de code ci‑dessus montre comment faire cela en utilisant le Délai d’attente propriété. Remarque : vous ne devez pas définir de grandes valeurs afin d’éviter de longues attentes dans votre application.
try (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.setTimeout(60000); // 60 seconds
// some code...
}
Comment restreindre le délai d’attente de salutation
Le client IMAP peut utiliser le mode automatique pour établir une connexion. Dans ce mode, le client IMAP parcourt tous les paramètres de connexion possibles jusqu’à ce que la connexion soit établie. Un serveur IMAP, en cas de connexion correcte, envoie une chaîne de salutation au client. Les serveurs peuvent initier une connexion SSL/TLS de manière implicite ou explicite (START TLS). Si le mode de connexion ne correspond pas (par exemple, le serveur attend une connexion SSL implicite tandis que le client tente d’établir une connexion non sécurisée ou SSL explicite), le serveur n’enverra pas de chaîne de salutation et l’utilisateur attendra longtemps jusqu’à ce que le délai d’attente atteigne la chaîne de salutation, puis le client passe à l’option de connexion suivante. Pour éviter ce problème, le paramètre GreetingTimeout a été introduit. Cette propriété vous permet de définir le délai d’attente pour la chaîne de salutation et de réduire le temps d’établissement de la connexion automatique.
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);