2010-08-26 6 views
6

J'utilise le composant open source pour récupérer les emails de mon serveur mail en utilisant vb.net (pop3) mais comme j'ai beaucoup de messages ça me donne une réponse Time out et je pense que si je reçois les nouveaux messages ça va faire la lecture plus vite. voici mon code:Comment récupérer des emails non lus en utilisant pop3?

Dim popp As New Pop3Client("[email protected]", "*******", "pop3.mail.com") 
    popp.AuthenticateMode = Pop3AuthenticateMode.Pop 
    popp.Port = 110 
    'popp.Ssl = True 
    popp.Authenticate() 
    Dim msglist As New List(Of String) 

    If popp.State = Pop3ConnectionState.Authenticated Then 
     Dim totalmsgs As Integer = popp.GetTotalMessageCount() 

     If totalmsgs > 0 Then 
      For index As Integer = 1 To totalmsgs 
       Dim msg As Pop3Message = popp.GetMessage(index) 
       msglist.Add(msg.Subject) 

      Next 

      popp.Close() 
     End If 
    End If 
    Return msglist 

s'il vous plaît je besoin d'aide si j'utilise le composant dans une mauvaise façon ou s'il y a un autre élément fais ce que je suis à la recherche. b.s. : le nom de mon composant est "Higuchi.Mail.dll" ou "OpenPOP.dll" et les deux sont identiques.

grâce

Répondre

4

POP3 ne pas le capibility de suivre si les messages sont lus ou non lus. Je suggère que vous définissiez votre limite à un nombre fini tel que 50 ou 100. Peut-être que vous pourriez faire une sorte de système de pagination.

Ce code doit être dans une fonction de sorte que vous pouvez l'appeler comme ceci:

Sub Main 
    Dim start As Integer = Integer.parse(Request.QueryString("start")) 
    Dim count As Integer = Integer.parse(Request.QueryString("count")) 
    Dim subjects As New List(Of String) 
    subjects = getSubjects(start, count) 

    'Do whatever with the results... 
    ' 
End Sub 

Function getSubjects(ByVal startItem As Integer, ByVal endItem as Integer) As List(Of String) 
    Dim popp As New Pop3Client("[email protected]", "*******", "pop3.mail.com") 
    popp.AuthenticateMode = Pop3AuthenticateMode.Pop 
    popp.Port = 110 

    popp.Authenticate() 
    Dim msglist As New List(Of String) 

    If popp.State = Pop3ConnectionState.Authenticated Then 
     Dim totalmsgs As Integer = popp.GetTotalMessageCount() 
     Dim endItem As Integer = countItems + startItem 
     If endItem > totalmsgs Then 
      endItem = totalmsgs 
     End If 

     If totalmsgs > 0 Then 
      For index As Integer = startItem To endItem 
       Dim msg As Pop3Message = popp.GetMessage(index) 
       msglist.Add(msg.Subject) 

      Next 

      popp.Close() 
     End If 
    End If 
    Return msglist 
End Function 

juste que le programme modifie la valeur de startItem-50 obtenir les cinquante (articles 50-100)

+0

pourriez-vous s'il vous plaît me donner un échantillon pour l'utilisation de la pagination. –

+0

J'ai ajouté la fonction et une illustration de la façon de l'appeler – js1568

1

Le protocole POP3 n'a pas la notion de messages visibles/invisibles.

Vous ne pouvez pas utiliser IMAP?

Cela vous donnerait plus de fonctionnalités (comme la recherche, le marquage, la gestion des dossiers) que POP3.

Questions connexes