2010-06-08 2 views
6

Я использовал открытый код из CodeProject для чтения электронной почты с сервера входящей почты (POP Server). Код можно найти по следующему адресу: http://www.codeproject.com/KB/IP/Pop3MimeClient.aspxПрочтите письмо с сервера входящей почты (POP)

Пока это прекрасно работает; Я могу читать электронные письма.

Моя цель использования этого кода заключалась в том, чтобы получать электронные письма с POP-сервера и обрабатывать их.

Моя проблема: Если я использую поп-сервер Gmail «pop.gmail.com» и запускаю приложение, я получаю только те письма, которые я не получил с момента последнего запуска приложения. Но если я использую POP-сервер моего клиента каждый раз, когда запускаю приложение, я получаю все электронные письма на поп-сервере.

Например:
Если я использую Gmail POP-сервер: pop.gmail.com
У меня есть три письма в поп-сервере. Я не запускал приложение. Я запускаю приложение в первый раз. Приложение читает письмо; на этот раз я получу все три письма. Я запускаю приложение второй раз; на этот раз мое приложение не будет читать электронные письма, потому что я уже прочитал 3 существующих. Это нормально; это то, что я хочу.

Теперь я отправляю электронное письмо по адресу pop.gmail.com. Я снова запускаю приложение в третий раз; на этот раз я получу только что пришедшее письмо, то есть четвертое. Это хорошее поведение; это то, что я хочу.

Но если я использую мой клиент POP сервер:
Независимо от того, сколько раз я запустить приложение, оно считывает все письма в почтовом ящике.

Это создаст проблему для меня, потому что я думаю о создании службы окна, которая будет читать электронные письма с поп-сервера и обрабатывать их. Эта служба будет работать непрерывно. Я буду обрабатывать электронные письма на POP-сервере, а затем спать, скажем, 1 минуту, а процесс - снова. Если приложение, загруженное из CodeProject, все время читает все электронные письма, почтовый ящик моих клиентов может иметь тысячи почтовых сообщений в этом почтовом ящике, поэтому для меня это было бы невозможно.

Есть ли какие-то настройки, которые должны быть выполнены на POP-сервере моего клиента, что позволит моему приложению получать только те электронные письма, которые я не читал с тех пор, как я запустил эту службу?

ответ

3

Не используйте реализацию Gmail POP или IMAP как каноническую; оба этих протокола ведут себя по-разному с учетными записями Gmail, чем с любым другим сервером.

Чтобы ответить на ваш вопрос, у вас есть два подхода, которые вы можете взять с собой:

  1. Отслеживайте сообщения корочки сообщений, которые вы видели, и игнорировать их на последующих соединениях (это оставит сообщения на сервере для загрузки другого клиента).
  2. Выполните команду DELE после загрузки сообщения, которое удалит его с сервера.
+0

+1 очень хороший ответ. – adatapost

Смежные вопросы