2010-09-27 5 views
3

Hy,C# paramètres Gmail définis POP3 est activé

Je suis en train de récupérer mails à partir d'un compte gmail en utilisant ces bibliothèques programaticaly http://mailsystem.codeplex.com/.

Tout est OK (j'obtiens le nombre de messages et une liste de tous les messages) lorsque j'exécute mon application pour la première fois après avoir configuré 'Activer POP pour tous les messages' dans 'Renvoi et POP/IMAP 'onglet dans le menu Paramètres. Mais quand je l'exécute à nouveau, aucun message n'est récupéré. Et si je vais à nouveau et définir le POP activer pour tous les messages, l'application fonctionne à nouveau.

Je pense que je dois définir le programme 'activer POP pour tous les messages' avant d'exécuter le code de récupération des messages.

Quelqu'un at-il une idée de comment puis-je faire ce programme en C# et asp.net?

Le code J'utilise:

Pop3Client pop = new Pop3Client(); 
     try 
     { 
      Label7.Text = string.Format("Connection to the pop 3 server : {0}", "pop.gmail.com "); 
      pop.ConnectSsl("pop.gmail.com", 995, TextBox4.Text, TextBox5.Text); 

      Label7.Text += string.Format("Message Count: {0}", pop.MessageCount.ToString()); 
      MessageCollection mc = new MessageCollection(); 
      for (int n = 1; n < pop.MessageCount + 1; n++) 
      { 
       Message newMessage = pop.RetrieveMessageObject(n); 
       mc.Add(newMessage); 

       Label7.Text += string.Format("Message ({0}) : {1} ", n.ToString(), newMessage.Subject); 
      } 
     } 

     catch (Pop3Exception pexp) 
     { 
      Label7.Text = string.Format("Pop3 Error: {0} ", pexp.Message); 
     } 

     catch (Exception ex) 
     { 
      Label7.Text = string.Format("Failed: {0} ", ex.Message); 
     } 

     finally 
     { 
      if (pop.IsConnected) 
      { 
       pop.Disconnect(); 
      } 
     } 

Et j'utilise la bibliothèque ActiveUp.Net.Mail de la source que je l'ai mentionné auparavant.

+0

Quelles options choisissez-vous pour les questions 1 et 2 sous POP? Pour Q1 vous devriez probablement choisir la première option - activer POP pour tous les messages (même ceux déjà téléchargés) et pour Q2 vous voudrez probablement choisir le premier - "garder la copie de Gmail dans la boîte de réception". – GalacticCowboy

+0

Oui, mais je comment puis-je faire cela par programmation en C#? –

Répondre

2

Êtes-vous essayer d'obtenir le comportement IMAP4 avec POP3?

Avec POP3, l'e-mail est généralement supprimé du serveur une fois récupéré. Ensuite, seuls les nouveaux messages seront disponibles dans votre application la prochaine fois que vous connext. Etc. Avec IMAP4, les messages restent sur le serveur. C'est une approche différente. Vous devez maintenir localement un état qui se synchronisera avec votre serveur IMAP4.

+0

Voilà ce que je ne comprends pas ... pourquoi je ne peux pas récupérer les mêmes mails avec pop3 lorsque je lance l'application la deuxième fois, la troisième fois et ainsi de suite. Mon compte Gmail est configuré avec pop.gmail.com au serveur de courrier entrant. –

+0

Je pense que c'est logique Gmail fournir pour empêcher le client de télécharger 2 fois le même message entre 2 sessions. Si vous voulez vraiment télécharger plusieurs fois le même message, optez pour IMAP4 –

+0

hmmm ... J'ai essayé avec IMAP4 mais ne fonctionne pas (et c'est logique parce que mon serveur de courrier entrant est pop.gmail.com, POP3) . Existe-t-il un autre moyen de récupérer les mêmes messages dans 2 sessions? –

Questions connexes