![]() |
|
Модераторы: feodorv |
![]()
|
|
| Edik |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 13.9.2006 Репутация: нет Всего: 1 |
Компилируеться без ошибок, но во время работы при включеном интернете выдает ошибку времени исполнения. Посмотрите пожалуйста кто- нибудь и помогите. А то сам ничего не могу разобраться.
Программа по идее должна выводить количество писем в почтовом ящике.
|
|||
|
||||
| jonie |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
| Edik |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 13.9.2006 Репутация: нет Всего: 1 |
Всмысле так надо было написать?
А все остальное правильно? |
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
Неплохо было бы знать какую ошибку выдает. -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| Edik |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 13.9.2006 Репутация: нет Всего: 1 |
Вот я исправил програму, ошибок уже не выдает, но в поле результата у меня знак "плюс". что это все значит, я не знаю, объсните мне кто нибудь, я в этой теме полный лох. И кстати почему это мне сделали замечание, что не выделена память в предыдущих постах? И правда я исправил это и нету глюков в проге, но результат выдает не тот. Как выделить вобще память, вроде же для символьных оператов типа char * pszUser; использовать new не надо.
|
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
1. Если сразу не видишь ошибку, то пользуйся отладчиком.
2.
Интересно чему же будет равен nBuf. 3. Почитай про send/recv. Особенно про то, сколько данных они отправляют. 4. На каждую введенную команду сервер шлет ответ. После каждой посланной команды этот ответ стоит проверять. Это сообщение отредактировал(а) ptr - 26.9.2007, 10:37 -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| Edik |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 13.9.2006 Репутация: нет Всего: 1 |
я проверял то что ты говоришь, и nBuf показывает реальную длинну строки. я же не пользуюсь sizeof(), я пользуюсь strlen(), вот в чем разница. может кто поможет разобраться с программой? а то я в msdn-е не очень понимаю.
|
|||
|
||||
| Edik |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 13.9.2006 Репутация: нет Всего: 1 |
я понял, да ты прав, надо указать длинну. я просто не сразу догнал что ты говоришь. я исправил эту ошибку, теперь сервер на команду stat выдает мне ответ такой +OK mPOP POP3 server ready <74. И что это значит? у меня не 74 письма в ящике.
|
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
Это приглашение сервер шлет когда ты подключаешься к нему (кстати ты получил неполное приглашение). Если ты ещё раз вызовешь recv то получишь следующую часть. Поскольку тебе надо считывать данные до \r\n, то напиши фукнцию которая будет читать из сокета строку. Прочитай внимательно пункт 3 и 4 в моём предыдущем сообщении. По поводу 3 пункта. Recv принимает не все данные, а только ту часть которая на текущий момент пришла. Аналогично и с send. По поводу 4. После подключения сервер шлет приглашение и после каждой команды (USER, PASS, STAT,...) сервер шлет ответ (удачная команда или нет). Поэтому после каждой команды надо проверять что сервер прислал. -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| Edik |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 13.9.2006 Репутация: нет Всего: 1 |
Хорошо ptr у меня все получилось, только команды STAT и LIST шлют одинаковые значения- 22 письма. А у меня 22 письма прочитанных в ящике. Не прочитанных 17. То есть всего 39 писем в ящике. Как получить это число 39 а не 22. Мне надо добраться до непрочитанных. Кроме того некоторые сервера вроде mail.ukrpost.ua на в ответ на посылку пароля мне выдают ошибку, хотя пароль правильный. насколько знаю то в зе бате там например для этого почтового сервера надо какуюто дополнительную аутенификацию. как мне получить в этом случае доступ к якщику, пройти эту аутенификацию, так как я говорю, что пароль был правильный, а выдало ошибку когда я послал PASS ошбику -ERR Authentication failed.
|
|||
|
||||
| Edik |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 13.9.2006 Репутация: нет Всего: 1 |
всмысле, ptr у меня ваще 22 письма в ящике, как показывали STAT и LIST, но как мне получить что 17 писем в ящике новых? или такого в протоколе не предусмотрено? кроме того, когда я получаю письмо командой RETR могу ли я установить, что письмо просмотрено, что оно уже не новое? и объясни мне эту аутенификацию, что я тебе писал в предыдущем посте. все спасибо.
|
|||
|
||||
| ptr |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
С помощью POP3 - никак. POP3 обеспечивает только базовый доступ. Для получения информации о новых письмах надо использовать IMAP.
Нет.
В POP3 можно использовать 3 способа аутентификации: 1. Самый простой и опасный - с помощью команд USER/PASS. 2. Альтернативный метод - командой APOP. Эта команда является опциональной и серверы её не обязаны поддерживать. Если сервер поддерживает APOP, то в приглашении будет выдан ключ (временная метка). Например:
Или как было у тебя
Далее эту метку с паролем надо зашифровать MD5: "<[email protected]>пароль" -> "3251fb5396fa27ebf357baa640416a1c". И уже это значение отсылать: APOP "имя ящика" "MD5 хэш". 3. Ну и самый продвинутый - с помощью команды AUTH. В ней надо выбрать механизм аутентификации и по этому механизму уже аутентифицироваться. -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
||||||||
|
|||||||||
| Edik |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 13.9.2006 Репутация: нет Всего: 1 |
так все таки я не пойму чего я не могу зайти на mail.ukrpost.ua? юсера принимает, пароль не принимает- подскажи выход. в чем тут проблема? и где посмотреть подробно по команде AUTH? это что новая команда POP3- потому что в документации- про нее я вроде не видел ничего.
|
|||
|
||||
| Edik |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 13.9.2006 Репутация: нет Всего: 1 |
пробовал я AUTH мне выдает -ERR Unsupported authentication mechanism. я просто посылал эту команду. прочитал некоторый хелп (нашел на гугле). вобще то я так понял, что если просто послать AUTH то программа должна хотя бы вернуть что- то вроде того механизма аутенификации, который поддерживаеться? но мне прислало ошибку. потом я еще попробывал послать AUTH KERBEROS_V4, AUTH GSSAPI, AUTH SKEY (это я так понял варианты аутенификации), все равно мне присылает ответ -ERR Unsupported authentication mechanism. а APOP команду я просто посылал, но видимо как ты объяснял (и я еще почитал), ее просто не пошлеш- надо зашифровать ответ сервера по этому шифру MD5. Я правильно понял?
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
сделай банальнее - возьми в руки снифер и погляди как это делают почтовики, что работают с этим сервером 8) всегда помогало...
и вообще стоит почитать rfc... ну и ЕСТЬ уже готовые библиотеки решающие твою задачу, может стоит довериться им? и кстати стоит почитать что пишет сам провайдер:
я слабо понимаю по украински) но смысл понятен 8) MD5 это не шифрофункция, это хешфункция. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |