[Решено] Indy+pop3 не получать повторно письма
Модератор: Модераторы
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
[Решено] Indy+pop3 не получать повторно письма
Многие почтовики умеют запоминать, отмечать или как-то не знаю как
не получать повторно письма по рор3. Можно ли это сделать средствами сабджа?
Последний раз редактировалось GAMER 24.06.2020 11:38:52, всего редактировалось 1 раз.
Re: Indy+pop3 не получать повторно письма
Не понял ...
По моему все что получают по POP3, IMAP, SMTP удаляется с сервера автоматически ведь по сути ты "забираешь почту из ящика ".
Re: Indy+pop3 не получать повторно письма
GAMER писал(а):Многие почтовики умеют запоминать, отмечать или как-то не знаю как
Для этого существует протокол. (POP3/IMAP4)
С ними желательно ознакомится.
https://ru.wikipedia.org/wiki/POP3
https://ru.wikipedia.org/wiki/IMAP
по POP3 можно синхронизировать по заголовкам писем.
IMAP4 - каждое сообщение имеет уникальный UID (автоинкрементное поле)
Добавлено спустя 2 минуты 35 секунд:
Alex2013 POP3/IMAP4 - это работа с почтовым сервером и письмами. что читать, что удалять нужно указать
SMTP - это служба доставки писем.
Re: Indy+pop3 не получать повторно письма
Сори напутал!
В общем давно (лет 15) почту иначе чем через веб-морду не читаю так что не мудрено что подробности капитально забыл . Хотя кода-то давно, лихо подключался к сервакам через 25-й порт (SMTP) и отравлял почту в "ручном режиме" с диким обратным адресом . 
Re: Indy+pop3 не получать повторно письма
Можешь использовать synapse.
Запоминаешь значение pop.StatCount и в следующий раз начинашь с этого письма. Вроде должно работать.
Код: Выделить всё
pop := TPOP3Send.Create;
try
pop.AutoTLS := True;
pop.Username := edit1.Text;
pop.Password := edit2.Text;
pop.TargetHost := 'pop.mail.ru';
pop.AuthType := POP3AuthAll;
pop.login;
pop.Stat;
for x := 0 to pop.StatCount - 1 do
Запоминаешь значение pop.StatCount и в следующий раз начинашь с этого письма. Вроде должно работать.
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Re: Indy+pop3 не получать повторно письма
Alex2013 писал(а):По моему все что получают по POP3, IMAP, SMTP удаляется с сервера автоматически ведь по сути ты "забираешь почту из ящика ".
Не забираешь, а получаеш. После прочтения можно ибо оставить либо удалить. Тот же оутлук по РОР3 как-то умеет оставлять и удалять через 14 дней, или прочитать на одной машине и на другой. По какому признаку они понимают, что письмо уже было получено?
STAT - почитаю за функцию, спасибо. В Инди вроде тоже видел.
Добавлено спустя 14 минут 4 секунды:
> STAT
< +OK 17 2908160 - Вводится команда STAT, позволяющая определить количество сообщений и их общий размер.
похоже, что в инди это делает IdPop3_1.CheckMessages. Если письма удалять, то ничего не просчитаем.
Добавлено спустя 7 минут 52 секунды:
IdPOP3_1.UIDL - Должно помочь. Возвращает идентификаторы писем.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Re: Indy+pop3 не получать повторно письма
У писем POP3 есть уникальный идентификатор UIDL. Нужно его хранить у себя в базе писем и сравнивать с получаемыми. Это - если нельзя удалить полученные письма на сервере (когда есть несколько клиентов).
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
[Решено] Indy+pop3 не получать повторно письма
Да, так и планирую
Re: [Решено] Indy+pop3 не получать повторно письма
в POP3 del метит письма на удаления, их можно отменить во время сеанса. После выхода сервер удаляет помеченные на удаления письма.GAMER писал(а):Не забираешь, а получаеш. После прочтения можно ибо оставить либо удалить.
в IMAP есть понятие Папки Folders,
Обычно есть папки Inbox Outbox Trash
можно создавать свои папки типа Inbox/Spam
