Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2012, 21:46   #1
SharkManF
 
Регистрация: 04.06.2012
Сообщений: 4
По умолчанию IdTcpClient и работа с почтой

Здравствуйте. Необходимо организовать работу по протоколу pop3 с использованием компонента indy IdTcpClient, а именно получить с сервера некоторое письмо. Проблема состоит в том что читая письмо в поток, я указываю количество байт для чтения согласно тому, что мне возвращает команда LIST для данного письма, но этого оказывается мало, и я получаю тело письмо не полностью.
запрос и ответ сервера
LIST 1
+OK 1 1409

код чтения письма

msOut := TMemoryStream.Create;
tcpPop.Socket.ReadStream(msOut, 1409);

Может кто-то объяснить в чем тут может быть дело и как вычислить точное количество байт?
SharkManF вне форума Ответить с цитированием
Старый 08.12.2012, 10:39   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

вообщето принято читать письмо до делиметера... обычно точка
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 08.12.2012, 10:58   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
с использованием компонента indy IdTcpClient
А почему не с idPOP3?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.12.2012, 11:29   #4
SharkManF
 
Регистрация: 04.06.2012
Сообщений: 4
По умолчанию

не idPOP3 потому что по постановке, необходимо реализовать работу на уровень ниже, т.е. через TcpClient и руками отсылать команды и обрабатывать ответ.

я пробовал читать в цикле ReadLn, в этом случае я мог бы отследить ".", но проблема в том что при больших размерах вложений ReadLn вызывает ошибку превышения максимальной длины строки.
Slym, если не трудно, можешь привести пример чтения не строками целиком, а блоками какими-нибудь, чтобы можно было отследить делимитер ?
SharkManF вне форума Ответить с цитированием
Старый 08.12.2012, 13:59   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
не idPOP3 потому что по постановке, необходимо реализовать работу на уровень ниже
если уж речь зашла за уровень ниже, то почему не на сокетах? Есть открытый прожект от Paul Toth - CrtSocket с примерами работы для POP.

Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 08.12.2012, 15:49   #6
SharkManF
 
Регистрация: 04.06.2012
Сообщений: 4
По умолчанию

Скачал предложенный пример. Он работоспособен в Delphi XE3?
пробую получить почту с моего локального почтового сервера и пример зависает уже на логине, хотя через telnet я без проблем подключаюсь. (насколько я смог разобраться в коде примера, там в цикле идет построчное чтение без timeout и просто виснет)

во-первых тут нет примера работы с вложениями, во-вторых насколько я вижу в коде, чтение идет тем же построчным способом, которым я пользуюсь в tcpclient.socket (в общем то я с сокетом и работаю).
в этом случаю скорее всего возникнет таже проблема что была у меня, превышение длины строки при попытке прочесть письмо с увесистым вложением.
SharkManF вне форума Ответить с цитированием
Старый 08.12.2012, 17:29   #7
SharkManF
 
Регистрация: 04.06.2012
Сообщений: 4
По умолчанию

Всем спасибо, вопрос решился.
SharkManF вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с почтой, 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