Détection de nouveaux messages électroniques sur le serveur POP3
Avec les comptes POP3, vous pouvez laisser les messages sur le serveur lors du téléchargement et de la lecture. Laisser les courriels sur le serveur signifie qu'ils sont disponibles pour d'autres applications et utilisateurs, par exemple les personnes qui accèdent à leurs courriels depuis plusieurs appareils. Vous pouvez également ne télécharger que les messages répondant à certains critères, par exemple des messages avec un objet particulier. Pour gérer les courriels, vous pouvez :
- Lisez tous les messages du serveur de messagerie POP3 à l'aide d'Aspose.Email.
- Téléchargez les messages dans votre base de données locale.
Les messages ne sont pas supprimés mais restent sur le serveur. La première fois qu'il s'exécute, ce processus fonctionne correctement. Tous les messages requis sont téléchargés dans la base de données. Mais la seconde exécution télécharge à nouveau les mêmes messages puisqu'ils sont toujours sur le serveur de messagerie. Cela entraîne des enregistrements en double. Pour résoudre ce problème, utilisez le Pop3MessageInfo.UniqueID propriété permettant de vérifier si un message a déjà été téléchargé. L'ID unique du message doit être stocké dans la base de données : c'est la clé de recherche pour détecter les nouveaux messages.
Détection de nouveaux messages
Pour identifier les nouveaux courriels à partir d'une liste de courriels sur un serveur POP3 :
- Connectez-vous au serveur.
- Obtenez une liste de courriels.
- Connectez-vous à la base de données.
- Obtenez une liste de courriels.
- Comparez les listes.
- Enregistrez les nouveaux courriels dans la base de données.
Le processus est plus rapide lorsque vous :
- Récupérez tous les ID uniques des messages dans une table de hachage.
- Recherchez dans la table de hachage au lieu de la base de données pour chaque message électronique dans une boucle for(…) .
Au lieu d'interroger la base de données pour chaque message, ce qui nécessite de nombreux appels, cette méthode ne nécessite qu'un seul appel. Le fragment de code suivant montre comment détecter les nouveaux messages électroniques sur le serveur POP3.
public static void run() {
try {
// Connect to the POP3 mail server and check messages.
Pop3Client pop3Client = new Pop3Client("pop.domain.com", 993, "username", "password");
// List all the messages
Pop3MessageInfoCollection msgList = pop3Client.listMessages();
for (Pop3MessageInfo msgInfo : msgList) {
// Get the POP3 message's unique ID
String strUniqueID = msgInfo.getUniqueId();
// Search your local database or data store on the unique ID. If a match is found, that means it's already downloaded. Otherwise download and save it.
if (searchPop3MsgInLocalDB(strUniqueID) == true) {
// The message is already in the database. Nothing to do with this message. Go to next message.
} else {
// Save the message
savePop3MsgInLocalDB(msgInfo);
}
}
} catch (Exception ex) {
System.err.println(ex);
}
}
private static void savePop3MsgInLocalDB(Pop3MessageInfo msgInfo) {
// Open the database connection according to your database. Use public properties (for example msgInfo.Subject) and store in database,
// for example, " INSERT INTO POP3Mails (UniqueID, Subject) VALUES ('" + msgInfo.UniqueID + "' , '" + msgInfo.Subject + "') and Run the query to store in database.
}
private static boolean searchPop3MsgInLocalDB(String strUniqueID) {
// Open the database connection according to your database. Use strUniqueID in the search query to find existing records,
// for example, " SELECT COUNT(*) FROM POP3Mails WHERE UniqueID = '" + strUniqueID + "' Run the query, return true if count == 1. Return false if count == 0.
return false;
}