2010-08-26 19 views
6

Tôi đang sử dụng thành phần nguồn mở để truy xuất email từ máy chủ thư của mình bằng vb.net (pop3) nhưng vì tôi có nhiều thư cho tôi phản hồi Thời gian chờ và tôi nghĩ rằng nếu tôi nhận được thư mới, đọc nhanh hơn. đây là mã của tôi:Làm thế nào để lấy lại các email chưa đọc bằng 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 

xin vui lòng tôi cần một số giúp đỡ nếu tôi đang sử dụng các thành phần trong một cách sai hoặc nếu có thành phần khác làm những gì tôi đang tìm kiếm. b.s. : tên thành phần của tôi là "Higuchi.Mail.dll" hoặc "OpenPOP.dll" và cả hai đều giống nhau.

cảm ơn

Trả lời

4

POP3 không có khả năng theo dõi xem thư có đọc hay chưa đọc. Tôi sẽ đề nghị bạn đặt giới hạn của bạn thành một số hữu hạn như 50 hoặc 100. Có lẽ bạn có thể thực hiện một số loại hệ thống phân trang.

Mã này cần phải nằm trong một chức năng để bạn có thể gọi nó như vậy:

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 

Chỉ cần có chương trình thay đổi giá trị cho startItem-50 có được năm mươi tiếp theo (mục 50-100)

+0

bạn có thể vui lòng cho tôi mẫu để sử dụng phân trang hay không. –

+0

Tôi đã thêm hàm và minh họa cách gọi – js1568

1

Giao thức POP3 không có khái niệm về tin nhắn đã xem/không nhìn thấy.

Bạn không thể sử dụng IMAP?

Nó sẽ cung cấp cho bạn nhiều tính năng hơn (như tìm kiếm, gắn cờ, quản lý thư mục) so với POP3.

Các vấn đề liên quan