2010-08-26 19 views
6

Estoy usando el componente de código abierto para recuperar correos electrónicos de mi servidor de correo usando vb.net (pop3) pero debido a que tengo muchos mensajes, me da tiempo de respuesta y creo que si recibo los mensajes nuevos lo haré hacer leer más rápido. este es mi código:¿Cómo recuperar solo correos electrónicos no leídos usando 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 

Por favor, necesito un poco de ayuda si estoy usando el componente de una manera incorrecta o si hay otro componente hacer lo que estoy buscando. b.s. : el nombre de mi componente es "Higuchi.Mail.dll" o "OpenPOP.dll" y los dos son iguales.

gracias

Respuesta

4

POP3 no tiene la capibility para rastrear si los mensajes son leídos o no leídos. Sugeriría que establecieras tu límite en un número finito como 50 o 100. Quizás podrías hacer algún tipo de sistema de paginación.

Este código debe estar dentro de una función para que se le puede llamar así:

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 

Sólo tiene el programa para cambiar el valor startItem a 50 obtenga los próximos cincuenta (artículos 50-100)

+0

¿podría darme una muestra para usar la paginación? –

+0

Agregué la función y una ilustración de cómo llamarlo – js1568

1

El protocolo POP3 no tiene la noción de mensajes visibles/no vistos.

¿No puedes usar IMAP?

Le daría más funciones (como buscar, marcar, administrar carpetas) que POP3.

Cuestiones relacionadas