Как получить только непрочитанные письма, используя pop3? - PullRequest
6 голосов
/ 26 августа 2010

Я использую компонент с открытым исходным кодом для получения электронной почты с моего почтового сервера с использованием vb.net (pop3), но поскольку у меня много сообщений, это дает мне время ожидания ответа, и я думаю, что если я только что получил новые сообщения, то это будетсделать чтение быстрее.это мой код:

    Dim popp As New Pop3Client("user@mail.com", "*******", "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

пожалуйста, мне нужна помощь, если я использую компонент неправильно или если другой компонент делает то, что я ищу.bs: мой компонент называется «Higuchi.Mail.dll» или «OpenPOP.dll», и они одинаковы.

спасибо

Ответы [ 2 ]

4 голосов
/ 26 августа 2010

POP3 не может отследить, прочитаны или нет сообщения.Я бы посоветовал вам установить ограничение на конечное число, такое как 50 или 100. Возможно, вы могли бы сделать какую-то систему разбиения на страницы.

Этот код должен быть внутри функции, чтобы вы могли вызывать его так:

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("user@mail.com", "*******", "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

Просто попросите программу изменить значение для startItem на 50, чтобы получить следующие пятьдесят (пункты 50-100)

1 голос
/ 04 сентября 2010

Протокол POP3 не имеет понятия видимых / невидимых сообщений.

Не можете ли вы использовать IMAP ?

Это даст вам больше возможностей (таких как поиск, пометка, управление папками), чем POP3.

...