Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Удаление с почтового ящика прочитанного сообщения.


Автор: Pakshin A. S. 24.2.2006, 13:02
Вот код:

Код

          then
            pop.Delete(mc); // не удаляет сообщение

      m.Free;
      dec(mc);
     end;
 except
    
 end;
 pop.Free;


В че может быть причина? И вообще: то ли я использую?

Автор: Pakshin A. S. 24.2.2006, 23:18
Есть какие-нить идеи? Посмотрев интернет, увидел, что не я один с такой проблемой, но пока среди таких же тем я не нашел ответа... smile

Сама функция Delete() показывает, что сообщение удалено, но в реале ничего не происходит... smile

Автор: Snowy 25.2.2006, 13:21
Перед pop.Free сделай
pop.Disconnect

Автор: Pakshin A. S. 25.2.2006, 13:31
smile заработало... гы...

А почему без Disconnect не хотело работать?

smile

Автор: Snowy 25.2.2006, 23:32
Вся фишка в том, что Free просто уничтожает объект, разрывая при этом Socket соединение.
Протокол POP3 устроен так, что некультурные соединения не считаются корректно закрытыми.
То есть по сути в процессе работы удаления писем не происходит. Происходит их маркировка, как удаленные.
При этом реально они не удаляются в течении сеанса. И в течении сеанса их можно восстановить.
Полностью же они удаляются при корректном завершении сеанса, то есть, при получении комманды QUIT.
Вот эту самую комманду и дает Disconnect TIdPOP3.
Без него сеанс считается завершенным аварийно и маркировка удаления не имеет силы.

Автор: Pakshin A. S. 25.2.2006, 23:38
Хммм... smile интересно... Принято к сведению и спасибо за науку... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)