Je cherche une méthode pour lire des e-mails en utilisant Pop3 en C# 2.0. Actuellement, j'utilise du code trouvé dans CodeProject. Cependant, cette solution est moins qu'idéale. Le plus gros problème est qu'elle ne prend pas en charge les e-mails écrits en unicode.
Réponses
Trop de publicités?Je ne recommanderais pas OpenPOP. Je viens de passer quelques heures à déboguer un problème - la méthode GetMessage() de POPClient d'OpenPOP renvoyait mystérieusement null. J'ai débogué cela et j'ai trouvé un bug d'index de chaîne - voir le correctif que j'ai soumis ici : http://sourceforge.net/tracker/?func=detail&aid=2833334&group_id=92166&atid=599778. Il était difficile de trouver la cause car il y a des blocs catch{} vides qui avalent les exceptions.
De plus, le projet est principalement en sommeil... la dernière version remonte à 2004.
Pour l'instant, nous utilisons toujours OpenPOP, mais je vais jeter un œil à certains des autres projets recommandés ici.
HigLabo.Mail est facile à utiliser. Voici un exemple d'utilisation:
using (Pop3Client cl = new Pop3Client())
{
cl.UserName = "MonNomUtilisateur";
cl.Password = "MonMotDePasse";
cl.ServerName = "MonServeur";
cl.AuthenticateMode = Pop3AuthenticateMode.Pop;
cl.Ssl = false;
cl.Authenticate();
///Obtenir le premier e-mail de ma boîte aux lettres
Pop3Message mg = cl.GetMessage(1);
String MyText = mg.BodyText;
///Si le message a une pièce jointe
Pop3Content ct = mg.Contents[0];
///vous pouvez l'enregistrer sur votre disque local
ct.DecodeData("chemin de votre fichier");
}
vous pouvez l'obtenir à partir de https://github.com/higty/higlabo ou Nuget [HigLabo]
J'ai juste essayé SMTPop et ça a fonctionné.
- J'ai téléchargé ceci.
- Ajouté la référence
smtpop.dll
à mon projet C# .NET
J'ai écrit le code suivant :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SmtPop;
namespace SMT_POP3 {
class Program {
static void Main(string[] args) {
SmtPop.POP3Client pop = new SmtPop.POP3Client();
pop.Open("", 110, "", "");
// Obtenir la liste des messages du serveur POP
SmtPop.POPMessageId[] messages = pop.GetMailList();
if (messages != null) {
// Parcourir la liste des pièces jointes
foreach(SmtPop.POPMessageId id in messages) {
SmtPop.POPReader reader= pop.GetMailReader(id);
SmtPop.MimeMessage msg = new SmtPop.MimeMessage();
// Lire le message
msg.Read(reader);
if (msg.AddressFrom != null) {
String from= msg.AddressFrom[0].Name;
Console.WriteLine("de: " + from);
}
if (msg.Subject != null) {
String subject = msg.Subject;
Console.WriteLine("sujet: "+ subject);
}
if (msg.Body != null) {
String body = msg.Body;
Console.WriteLine("corps: " + body);
}
if (msg.Attachments != null && false) {
// Faire quelque chose avec la première pièces jointe
SmtPop.MimeAttachment attach = msg.Attachments[0];
if (attach.Filename == "data") {
// Lire les données de la pièce jointe
Byte[] b = Convert.FromBase64String(attach.Body);
System.IO.MemoryStream mem = new System.IO.MemoryStream(b, false);
//BinaryFormatter f = new BinaryFormatter();
// DataClass data= (DataClass)f.Deserialize(mem);
mem.Close();
}
// Supprimer le message
// pop.Dele(id.Id);
}
}
}
pop.Quit();
}
}
}
- Réponses précédentes
- Plus de réponses