2010-08-26 7 views
6

Używam składnik open source emaile z mojego serwera pocztowego za pomocą VB.NET (POP3) ale ponieważ mam dużo wiadomości, że daje mi czas reakcji się i myślę, że jeśli po prostu dostał nowe wiadomości Będzie przyspieszyć czytanie. to mój kod:Jak odzyskać tylko nieprzeczytane wiadomości e-mail za pomocą 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 

proszę i potrzebują pomocy, jeśli używam komponentu w niewłaściwy sposób lub jeśli jest inny składnik robić to, co szukam. b.s. : moja nazwa komponentu to "Higuchi.Mail.dll" lub "OpenPOP.dll" i oba są takie same.

dzięki

Odpowiedz

4

POP3 nie ma capibility aby śledzić, czy wiadomości są przeczytane lub nieprzeczytane. Sugerowałbym, abyś ustawił limit na skończoną liczbę, na przykład 50 lub 100. Być może mógłbyś zrobić jakiś system stronicowania.

Kod ten musi być wewnątrz funkcji, dzięki czemu można nazwać tak:

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 

Wystarczy mieć program zmienić wartość dla startItem do 50 dostać kolejnych pięćdziesięciu (pozycje 50-100)

+0

może u proszę mi dać próbkę za korzystanie stronicowania. –

+0

Dodałem funkcję i ilustrację jak ją nazwać – js1568

1

protokół POP3 nie mają pojęcia postrzegać/niewidzialnych wiadomości.

nie można używać IMAP?

Byłoby daje więcej możliwości (jak wyszukiwanie, zarządzanie kategoriami, folder) niż POP3.

Powiązane problemy