Как получить только непрочитанные письма с помощью pop3?
Я использую компонент с открытым исходным кодом для получения писем с моего почтового сервера, используя 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
пожалуйста, мне нужна помощь, если я использую компонент неправильно или если есть другой компонент, сделайте то, что я ищу. b.s. : мое имя компонента - " Хигучи.Почта.dll " или " OpenPOP.dll " и два тот же.
спасибо
2 ответов
POP3 не имеют capibility, чтобы отслеживать, является ли сообщение прочитано или не прочитано. Я бы предложил вам установить предел на конечное число, такое как 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)
протокол POP3 не имеет понятия видимых / невидимых сообщений.
вы не можете использовать IMAP?
Это даст вам больше возможностей (например, поиск, флаги, управление папками), чем POP3.