2010-06-08 40 views
6

Tôi đã sử dụng mã nguồn mở từ CodeProject để đọc email từ máy chủ thư đến (POP Server). Mã này có thể được tìm thấy tại địa điểm sau: http://www.codeproject.com/KB/IP/Pop3MimeClient.aspxĐọc email từ máy chủ thư đến (POP)

Cho đến nay nó hoạt động tốt; Tôi có thể đọc email.

Mục tiêu của tôi khi sử dụng mã này là truy xuất email từ máy chủ POP và xử lý chúng.

Vấn đề của tôi là: Nếu tôi sử dụng máy chủ pop của Gmail "pop.gmail.com" và chạy ứng dụng, tôi chỉ nhận được những email mà tôi chưa truy xuất kể từ lần cuối cùng tôi chạy ứng dụng. Nhưng nếu tôi sử dụng máy chủ POP của khách hàng mỗi khi tôi chạy ứng dụng, tôi nhận được tất cả các email trong máy chủ pop.

Ví dụ:
Nếu tôi sử dụng Gmail POP server: pop.gmail.com
tôi có ba email trong máy chủ pop. Tôi chưa chạy ứng dụng. Tôi đang chạy ứng dụng lần đầu tiên. Ứng dụng đọc email; lần này tôi sẽ nhận được cả ba email. Tôi chạy ứng dụng lần thứ hai; ứng dụng của tôi sẽ không đọc bất kỳ email nào lần này bởi vì tôi đã đọc 3 email hiện có. Điều này là tốt; đây là những gì tôi muốn.

Bây giờ tôi gửi email đến pop.gmail.com. Tôi chạy lại ứng dụng lần thứ ba; lần này tôi sẽ chỉ nhận được email vừa mới đến, đó là email thứ tư. Đây là hành vi tốt; đây là những gì tôi muốn.

Nhưng nếu tôi sử dụng máy chủ POP khách hàng của tôi:
Không có vấn đề bao nhiêu lần tôi chạy ứng dụng, nó đọc tất cả các email trong hộp thư.

Điều này sẽ tạo ra một vấn đề cho tôi, bởi vì tôi đang nghĩ đến việc xây dựng một dịch vụ cửa sổ sẽ đọc email từ máy chủ pop và xử lý chúng. Dịch vụ này sẽ chạy liên tục. Tôi sẽ xử lý email trong máy chủ POP sau đó ngủ cho chúng ta hãy nói 1 phút và quá trình các email một lần nữa. Nếu ứng dụng được tải xuống từ CodeProject đọc tất cả email mọi lúc, hộp thư khách hàng của tôi có thể có hàng nghìn email trong hộp thư này, vì vậy điều này sẽ không khả thi đối với tôi.

Có một số cài đặt sẽ được thực hiện tại máy chủ POP của khách hàng của tôi mà sẽ cho phép ứng dụng của tôi chỉ truy xuất những email mà tôi chưa đọc kể từ lần cuối cùng tôi chạy dịch vụ?

Trả lời

3

Không sử dụng triển khai POP hoặc IMAP của Gmail như kinh điển; cả hai giao thức này hoạt động khác với tài khoản Gmail so với hầu hết các máy chủ khác.

Để trả lời câu hỏi của bạn, bạn có hai cách tiếp cận mà bạn có thể thực hiện:

  1. Theo dõi các ID thông điệp của các thông điệp mà bạn đã nhìn thấy và bỏ qua chúng trên các kết nối tiếp theo (điều này sẽ để lại những thông điệp trên máy chủ cho một ứng dụng khách khác để tải xuống).
  2. Phát hành lệnh DELE sau khi tải xuống thư, thao tác này sẽ xóa thư khỏi máy chủ.
+0

+1 câu trả lời rất hay. – adatapost

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