Recommandations pour qu'un composant .NET accède à une boîte de réception de courrier électronique [fermé]

StackOverflow https://stackoverflow.com/questions/18006

  •  09-06-2019
  •  | 
  •  

Question

On m'a demandé d'écrire un service Windows en C# pour surveiller périodiquement une boîte de réception de courrier électronique et insérer les détails de tous les messages reçus dans une table de base de données.

Mon instinct est de le faire via POP3 et bien sûr, la recherche sur Google du "composant .NET POP3" produit d'innombrables (ok, 146 000) résultats.

Quelqu'un a-t-il déjà fait quelque chose de similaire et pouvez-vous recommander un composant décent qui ne fera pas sauter la banque (quelques centaines de dollars maximum) ?

Y aurait-il des avantages à utiliser IMAP plutôt que POP3 ?

Était-ce utile?

La solution

je recommande chilkat.Ils ont des composants assez stables et vous pouvez obtenir leur composant de messagerie pour seulement 99 $ pour un seul développeur.Personnellement, je pense qu'opter pour l'ensemble des composants est une meilleure affaire, car il ne coûte que 289 $ et est livré avec de nombreux composants utiles.Je ne suis en aucun cas affilié à eux, même si j'en ai probablement l'air.

Autres conseils

Avec le protocole IMAP, vous pouvez accéder sous-dossiers, et définir l'état du message (vu/invisible), vous pouvez également utiliser INACTIF fonctionnalité pour les notifications instantanées.

Mail.dll comprend POP3, IMAP, SMTP composants avec SSL support et analyseur MIME puissant :

using(Imap imap = new Imap())
{
    imap.Connect("imap.server.com");    // or ConnectSSL for SSL
    imap.Login("user", "password");

    imap.SelectInbox();
    List<long> uids = imap.Search(Flag.Unseen);
    foreach (long uid in uids)
    {
        IMail mail = new MailBuilder()
            .CreateFromEml(imap.GetMessageByUID(uid));
        Console.WriteLine(mail.Subject);
    }
    imap.Close();
}

Veuillez noter qu'il s'agit d'un produit commercial que j'ai créé.

Vous pouvez le télécharger sur https://www.limilabs.com/mail

J'utilise SharpMimeTools gratuit et open source dans mon application, BugTracker.NET.Cela s'est avéré très fiable :

http://anmar.eu.org/projects/sharpmimetools/

Voir les fichiers POP3Client.cs, POP3Main.cs et insert_bug.aspx

je recommanderais Intelligence avancée.Il existe des composants pour POP3 et IMAP (ASPNetPOP3 et ASPNetIMAP).Support de bonne qualité et très réactif – je me souviens avoir reçu des réponses à mes questions un week-end.

Vous voudrez peut-être consulter notre Composant Rebex Mail.Il comprend IMAP, SMTP, POP3 protocoles et et S/MIME analyseur.

Le POP3 n'a pas de concept de messages « non lus » ni de recherche de messages correspondant à des critères spécifiques. POP3 renvoie simplement tous les messages dans votre boîte de réception.

En utilisant IMAP vous pouvez demander au serveur IMAP de vous envoyer uniquement des messages non lus, des messages arrivés depuis une heure spécifiée, des messages d'un utilisateur spécifique, etc.Vous n'êtes pas obligé de tout télécharger sur le client et d'y effectuer le filtrage.

Le code suivant montre comment télécharger les messages non lus depuis le Imap serveur utilisant Rebex.Net.Imap classe.

// create client, connect and log in 
Imap client = new Imap();
client.Connect("imap.example.org");
client.Login("username", "password");

// select folder 
client.SelectFolder("Inbox");

// get message list - envelope headers 
ImapMessageCollection messages = client.Search
  (
     ImapSearchParameter.HasFlagsNoneOf(ImapMessageFlags.Seen)
  ); 

// display info about each message 
Console.WriteLine("UID | From | To | Subject");
foreach (ImapMessageInfo message in messages)
{
    Console.WriteLine(
        "{0} | {1} | {2} | {3}",
        message.UniqueId,
        message.From,
        message.To,
        message.Subject);
}

// disconnect 
client.Disconnect();

Voici un exemple de combinaison de plusieurs critères de recherche.Cela renverra les messages de l’année dernière d’une taille supérieure à 100 Ko.

ImapMessageCollection messages = client.Search
  (
     ImapSearchParameter.Arrived(DateTime.Now.AddYears(-1), DateTime.Now),
     ImapSearchParameter.Size(1024 * 100, Int32.MaxValue)
  ); 

Vous pouvez télécharger la version d'essai à partir de rebex.net/secure-mail.net/download.aspx

Si vous utilisez une implémentation POP3 open source ou quelque chose de disponible gratuitement, vous aurez accès pour modifier le code et l'étendre dans la direction nécessaire.Un rapide Google a abouti à ce C# Code POP3 de Code Project pour récupérer les messages.

Il y a quelque chose de stimulant à lancer le vôtre, ou au moins à l'étendre.

alt text

Lumisoft est open source et comprend des clients IMAP et POP (entre autres).Je les utilise depuis des années sans problème.

Et WCF ?C'est gratuit.

Si vous disposez d'un serveur Exchange :http://msdn.microsoft.com/en-us/library/bb397812.aspx

un exemple pour pop3 :http://bartdesmet.net/blogs/bart/archive/2006/09/13/4417.aspx

C#Mail coûte 0 $ mais est également sous licence GNU GPL, alors assurez-vous que tout va bien.

Vous pouvez le faire en utilisant les objets MailBee.NET : http://www.afterlogic.com/products/net-email-components

Bien que je recommande effectivement d'utiliser IMAP, d'autant plus qu'il offre le support IDLE déjà mentionné ici, vous pouvez faire de même avec POP3.Vous trouverez une brève description des deux approches et un exemple complet du scénario IMAP IDLE :

http://www.afterlogic.com/wiki/Getting_notifications_about_new_messages_in_mailbox_%28IMAP_IDLE_and_polling%29

Veuillez noter que je suis affilié à AfterLogic et que je serai heureux de vous aider si vous avez besoin d'aide, cochez l'option Demander de l'assistance sur notre site Web.

IMAPX2 est le meilleur.En utilisant IMAP, vous pouvez contrôler les dossiers d'un serveur de messagerie, ce que vous ne pourriez pas faire avec POP.IMAPX est un code open source que vous pouvez consulter et dont l'utilisation est gratuite.

IMAPX est simple et fiable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top