|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.12.2012, 21:46 | #1 |
Регистрация: 04.06.2012
Сообщений: 4
|
IdTcpClient и работа с почтой
Здравствуйте. Необходимо организовать работу по протоколу pop3 с использованием компонента indy IdTcpClient, а именно получить с сервера некоторое письмо. Проблема состоит в том что читая письмо в поток, я указываю количество байт для чтения согласно тому, что мне возвращает команда LIST для данного письма, но этого оказывается мало, и я получаю тело письмо не полностью.
запрос и ответ сервера LIST 1 +OK 1 1409 код чтения письма msOut := TMemoryStream.Create; tcpPop.Socket.ReadStream(msOut, 1409); Может кто-то объяснить в чем тут может быть дело и как вычислить точное количество байт? |
08.12.2012, 10:39 | #2 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
вообщето принято читать письмо до делиметера... обычно точка
Не стесняемся, плюсуем!
|
08.12.2012, 10:58 | #3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
08.12.2012, 11:29 | #4 |
Регистрация: 04.06.2012
Сообщений: 4
|
не idPOP3 потому что по постановке, необходимо реализовать работу на уровень ниже, т.е. через TcpClient и руками отсылать команды и обрабатывать ответ.
я пробовал читать в цикле ReadLn, в этом случае я мог бы отследить ".", но проблема в том что при больших размерах вложений ReadLn вызывает ошибку превышения максимальной длины строки. Slym, если не трудно, можешь привести пример чтения не строками целиком, а блоками какими-нибудь, чтобы можно было отследить делимитер ? |
08.12.2012, 13:59 | #5 | |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Цитата:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
|
08.12.2012, 15:49 | #6 |
Регистрация: 04.06.2012
Сообщений: 4
|
Скачал предложенный пример. Он работоспособен в Delphi XE3?
пробую получить почту с моего локального почтового сервера и пример зависает уже на логине, хотя через telnet я без проблем подключаюсь. (насколько я смог разобраться в коде примера, там в цикле идет построчное чтение без timeout и просто виснет) во-первых тут нет примера работы с вложениями, во-вторых насколько я вижу в коде, чтение идет тем же построчным способом, которым я пользуюсь в tcpclient.socket (в общем то я с сокетом и работаю). в этом случаю скорее всего возникнет таже проблема что была у меня, превышение длины строки при попытке прочесть письмо с увесистым вложением. |
08.12.2012, 17:29 | #7 |
Регистрация: 04.06.2012
Сообщений: 4
|
Всем спасибо, вопрос решился.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с почтой, Indy (ipPOP3) | grorg | Работа с сетью в Delphi | 0 | 10.09.2012 09:32 |
работа с IdTCPClient | knopkodaf | Работа с сетью в Delphi | 5 | 28.05.2012 20:07 |
Работа с почтой & проверка подключения | Стелс | Работа с сетью в Delphi | 1 | 03.11.2011 23:09 |
Работа с IdTCPServer и IdTCPClient | rule-z | Работа с сетью в Delphi | 4 | 19.08.2011 07:58 |
Работа с почтой | Karp_13 | Работа с сетью в Delphi | 1 | 24.06.2009 19:36 |