J'ai une application Web qui nécessite un composant basé sur le serveur pour accéder périodiquement aux boîtes aux lettres POP3 et récupérer les courriels. Le service doit ensuite traiter les courriels, ce qui implique.. :
- Validation de l'e-mail par rapport à certaines règles commerciales (contient-il une référence valide dans l'objet, quel utilisateur a envoyé l'e-mail, etc.)
- Analyse et sauvegarde des pièces jointes sur le disque
- Prenez le corps de l'e-mail et les détails de la pièce jointe et créez un nouvel élément dans la base de données.
- Ou mettez à jour un élément existant dont la référence correspond à l'objet de l'e-mail reçu.
Quelle est la meilleure façon d'aborder cette question ? Je ne veux vraiment pas avoir à écrire un client POP3 à partir de zéro, mais je dois pouvoir personnaliser le traitement des e-mails. L'idéal serait de pouvoir brancher un composant qui se charge de l'accès et de la récupération pour moi, renvoyant des tableaux de pièces jointes, de corps de texte, d'objet, etc. prêts pour mon traitement...
[ MISE À JOUR : Critiques ]
J'ai passé pas mal de temps à chercher des bibliothèques POP3 .NET (principalement gratuites) et j'ai donc pensé que je pourrais fournir une brève revue de certaines de celles mentionnées ci-dessous et de quelques autres :
- Pop3.net - gratuit - fonctionne bien, mais est très basique en termes de fonctionnalités fournies. Il s'agit essentiellement des commandes POP3 et d'un encodage base64, mais c'est très simple - probablement une bonne introduction.
- Assistant Pop3 - code commercial / code source ouvert - je n'ai pas réussi à le construire, il manque des DLL, je ne m'embêterais pas avec cela
- C#Mail - gratuit pour un usage personnel - fonctionne bien, est livré avec un analyseur Mime et un client SMTP, mais les commentaires sont en japonais (ce qui n'est pas grave) et il ne fonctionne pas avec SSL "tout de suite" - j'ai dû modifier le constructeur SslStream, après quoi il a fonctionné sans problème.
- OpenPOP - gratuit - n'a pas été mis à jour depuis environ 5 ans, son état actuel est donc .NET 1.0, ne prend pas en charge SSL mais ce n'était pas un problème à résoudre - j'ai simplement remplacé le flux existant par un SslStream et cela a fonctionné. Livré avec un analyseur Mime.
Parmi les bibliothèques gratuites, je choisirais C#Mail ou OpenPOP.
J'ai regardé quelques bibliothèques commerciales : Chillkat , Rebex , RemObjects , JMail.net . Sur la base des fonctionnalités, du prix et de l'impression de la société, j'opterais probablement pour Rebex et je le ferai peut-être à l'avenir si mes besoins changent ou si je rencontre des problèmes de production avec C#Mail ou OpenPOP.
Au cas où quelqu'un en aurait besoin, voici le constructeur SslStream de remplacement que j'ai utilisé pour activer SSL avec C#Mail et OpenPOP :
SslStream stream = new SslStream(clientSocket.GetStream(), false,
delegate(object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors errors) { return true; });