Re: ПОМОГИТЕ С ПОП3 пожалуйста
От: korzhik Россия  
Дата: 20.04.05 16:49
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Ребята пожалуйста помогите с POP3! Мне надо написать ПОП3 клиент, а я никак не могу зарегистрироваться на сервере(ПОП).

А>В общем вот код на С++ с использованием CSocket, проблема в том, что после отправки ЮЗЕР... мы ждём ответ сервака а, он не приходит. Если найдёте ошибку пасибо вам, а если и вообще поможите и объясните всё, то я вооще на колени упаду, ибо этот клиент — курсовая, и здовать её нао скоро.
А>void CPostView::OnCommandsConnect()
А> char user[11]="USER joker";
А> char pass[10]="PASS 1988";
А>}


давным давно я этим занимался, там вроде каждая команда должна завершаться последовательностью "\r\n"
Re: ПОМОГИТЕ С ПОП3 пожалуйста
От: TarasCo  
Дата: 21.04.05 06:58
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Ребята пожалуйста помогите с POP3! Мне надо написать ПОП3 клиент, а я никак не могу зарегистрироваться на сервере(ПОП).

А>В общем вот код на С++ с использованием CSocket, проблема в том, что после отправки ЮЗЕР... мы ждём ответ сервака а, он не приходит. Если найдёте ошибку пасибо вам, а если и вообще поможите и объясните всё, то я вооще на колени упаду, ибо этот клиент — курсовая, и здовать её нао скоро.
А>void CPostView::OnCommandsConnect()
А>{
А> // TODO: Add your command handler code here
А> CPostDoc* pDoc = GetDocument();
А> ASSERT_VALID(pDoc);
А> CGad *gad;
А> char chr[255]="";

А> char user[11]="USER joker";

А> char pass[10]="PASS 1988";
А> CString s,c;
А> CString buf;
А> gad=new CGad;
gad->>Create();
А> if(gad->Connect("127.0.0.1",25)==TRUE)
А> {
gad->>Receive(&chr,sizeof(chr),0);
А> MessageBox(chr,"SERVER",MB_OK);
А> int e=gad->Send(user,sizeof(user),0);
А> int r=gad->Receive(&pDoc->chr1,sizeof(pDoc->chr1),0);
А> Sleep(1000);
А> }
А>}


А у Вас POP3 сервер на 25 порту живет? 25 — это больше похоже на SMTP.

И вообще, совет за бесплатно — прежде, чем писать код, разберитесь как вообще все работает. Для этого возмите telnet и попробуйте связаться с сервером с помощью него. Например:
> telnet my_pop3_server.com 110
Сервер радостно ответит:
+OK I am a super pop3 server
> USER ThisIsMe
+OK need a password

и.т.д.
Да пребудет с тобою сила
Re[3]: ПОМОГИТЕ С ПОП3 пожалуйста
От: Jax Россия  
Дата: 22.04.05 06:45
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>пасибо большое но может вы ещё мне ссылки на какие нибудь учебники кинете?

А>про 25 порт это ошибка т.к. я просто сокет тестировал (сделался он или нет) на IIS а он всё же SMTP сервер.
А>да и ещ как мне зная обычный адрес (POP3.mail.ru) epyfnm IP (лучше програмно).
А>Спасибо огромное.

Протокол POP3,
так же необходимо прочитать Про MIME и
Формат почтовых сообщений (на русском не встречал).

Первоисточники (англ):
rfc1939 (POP3)
rfc2045 (MIME)
rfc2046 (MIME)
rfc2047 (MIME)
rfc2048 (MIME)
rfc2049 (MIME)

Для того, что бы узнать IP по имени, нужно воспользоваться функцией gethostbyname(), в MSDN есть пример её использования.
Re[6]: ПОМОГИТЕ С ПОП3 пожалуйста
От: alshits1  
Дата: 23.04.05 17:03
Оценка: :)
Здравствуйте, Аноним, Вы писали:

Да и ещё маленький вопрос что такое CRLF?
ПОМОГИТЕ С ПОП3 пожалуйста
От: Аноним  
Дата: 20.04.05 16:43
Оценка:
Ребята пожалуйста помогите с POP3! Мне надо написать ПОП3 клиент, а я никак не могу зарегистрироваться на сервере(ПОП).
В общем вот код на С++ с использованием CSocket, проблема в том, что после отправки ЮЗЕР... мы ждём ответ сервака а, он не приходит. Если найдёте ошибку пасибо вам, а если и вообще поможите и объясните всё, то я вооще на колени упаду, ибо этот клиент — курсовая, и здовать её нао скоро.
void CPostView::OnCommandsConnect()
{
// TODO: Add your command handler code here
CPostDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CGad *gad;
char chr[255]="";

char user[11]="USER joker";
char pass[10]="PASS 1988";
CString s,c;
CString buf;
gad=new CGad;
gad->Create();
if(gad->Connect("127.0.0.1",25)==TRUE)
{
gad->Receive(&chr,sizeof(chr),0);
MessageBox(chr,"SERVER",MB_OK);
int e=gad->Send(user,sizeof(user),0);
int r=gad->Receive(&pDoc->chr1,sizeof(pDoc->chr1),0);
Sleep(1000);
}
}
Re: ПОМОГИТЕ С ПОП3 пожалуйста
От: nen777w  
Дата: 20.04.05 17:24
Оценка:
Пиши в мыло ruslan (СБК) csodessa (ТЧК) com
поделюсь своей библиотекой для POP3 и SMTP
Posted via RSDN NNTP Server 1.9
Re[2]: ПОМОГИТЕ С ПОП3 пожалуйста
От: Аноним  
Дата: 21.04.05 16:19
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>Здравствуйте, Аноним, Вы писали:


А>>Ребята пожалуйста помогите с POP3! Мне надо написать ПОП3 клиент, а я никак не могу зарегистрироваться на сервере(ПОП).

А>>В общем вот код на С++ с использованием CSocket, проблема в том, что после отправки ЮЗЕР... мы ждём ответ сервака а, он не приходит. Если найдёте ошибку пасибо вам, а если и вообще поможите и объясните всё, то я вооще на колени упаду, ибо этот клиент — курсовая, и здовать её нао скоро.
А>>void CPostView::OnCommandsConnect()
А>>{
А>> // TODO: Add your command handler code here
А>> CPostDoc* pDoc = GetDocument();
А>> ASSERT_VALID(pDoc);
А>> CGad *gad;
А>> char chr[255]="";

А>> char user[11]="USER joker";

А>> char pass[10]="PASS 1988";
А>> CString s,c;
А>> CString buf;
А>> gad=new CGad;
gad->>>Create();
А>> if(gad->Connect("127.0.0.1",25)==TRUE)
А>> {
gad->>>Receive(&chr,sizeof(chr),0);
А>> MessageBox(chr,"SERVER",MB_OK);
А>> int e=gad->Send(user,sizeof(user),0);
А>> int r=gad->Receive(&pDoc->chr1,sizeof(pDoc->chr1),0);
А>> Sleep(1000);
А>> }
А>>}


TC>А у Вас POP3 сервер на 25 порту живет? 25 — это больше похоже на SMTP.


TC>И вообще, совет за бесплатно — прежде, чем писать код, разберитесь как вообще все работает. Для этого возмите telnet и попробуйте связаться с сервером с помощью него. Например:

>> telnet my_pop3_server.com 110
TC>Сервер радостно ответит:
TC>+OK I am a super pop3 server
>> USER ThisIsMe
TC>+OK need a password

TC>и.т.д.


пасибо большое но может вы ещё мне ссылки на какие нибудь учебники кинете?
про 25 порт это ошибка т.к. я просто сокет тестировал (сделался он или нет) на IIS а он всё же SMTP сервер.
да и ещ как мне зная обычный адрес (POP3.mail.ru) epyfnm IP (лучше програмно).
Спасибо огромное.
Re[4]: ПОМОГИТЕ С ПОП3 пожалуйста
От: alshits1  
Дата: 22.04.05 18:03
Оценка:
Здравствуйте, Jax, Вы писали:

Посибо огромное за ссылки, но у меня тут возник вопрос а точнее много:
Как мне узнать длину письма, именно письма а не всего сообщения?
Как разделить поля (Subjeckt To From Body)
И ещ один маленький: можно ли использовать CString вместо массиа char и если да то как (у меня после команды ресив строка остаётся пустой)
Re: ПОМОГИТЕ С ПОП3 пожалуйста
От: vityanya Узбекистан  
Дата: 22.04.05 18:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Ребята пожалуйста помогите с POP3! Мне надо написать ПОП3 клиент, а я никак не могу зарегистрироваться на сервере(ПОП).

А>В общем вот код на С++ с использованием CSocket, проблема в том, что после отправки ЮЗЕР... мы ждём ответ сервака а, он не приходит. Если найдёте ошибку пасибо вам, а если и вообще поможите и объясните всё, то я вооще на колени упаду, ибо этот клиент — курсовая, и здовать её нао скоро.
А>void CPostView::OnCommandsConnect()
А>{
А> // TODO: Add your command handler code here
А> CPostDoc* pDoc = GetDocument();
А> ASSERT_VALID(pDoc);
А> CGad *gad;
А> char chr[255]="";

А> char user[11]="USER joker";

А> char pass[10]="PASS 1988";
А> CString s,c;
А> CString buf;
А> gad=new CGad;
gad->>Create();
А> if(gad->Connect("127.0.0.1",25)==TRUE)
А> {
gad->>Receive(&chr,sizeof(chr),0);
А> MessageBox(chr,"SERVER",MB_OK);
А> int e=gad->Send(user,sizeof(user),0);
А> int r=gad->Receive(&pDoc->chr1,sizeof(pDoc->chr1),0);
А> Sleep(1000);
А> }
А>}


Во-первых РОР3 идет через 110 порт, а у тебя там 25
Во-вторых у тебя не правильный запрос! Запрос должен заканчиваться парой CRLF (\r\n на C#)
Re[5]: ПОМОГИТЕ С ПОП3 пожалуйста
От: Аноним  
Дата: 23.04.05 11:00
Оценка:
Здравствуйте, alshits1, Вы писали:

A>Здравствуйте, Jax, Вы писали:


A>Посибо огромное за ссылки, но у меня тут возник вопрос а точнее много:

A>Как мне узнать длину письма, именно письма а не всего сообщения?
A>Как разделить поля (Subjeckt To From Body)
A>И ещ один маленький: можно ли использовать CString вместо массиа char и если да то как (у меня после команды ресив строка остаётся пустой)

Про последний — есть метод временно выдать буфер как char*. Иначе — класс не знает, что в него что-то пишут...
Разделить поля — пока идут строки вида ".*: .*" — это поля заголовка, в начале строки — его имя. Дальше — тело.
Re[6]: ПОМОГИТЕ С ПОП3 пожалуйста
От: alshits1  
Дата: 23.04.05 16:15
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, alshits1, Вы писали:


A>>Здравствуйте, Jax, Вы писали:


А>Про последний — есть метод временно выдать буфер как char*. Иначе — класс не знает, что в него что-то пишут...

А>Разделить поля — пока идут строки вида ".*: .*" — это поля заголовка, в начале строки — его имя. Дальше — тело.

Большое спасибо
У меня есть ещё вопрос: почему у меня после команды сенд юзера от сервера приходит сообщение такое.



e=pDoc->gad->Send(user,sizeof(user),0);
r=pDoc->gad->Receive(&chr1,sizeof(chr1),0);
MessageBox(chr1,"SERVER",MB_OK);



"+OK Password required for user tmp666
-ERR Unknown command: ""
"
Re[6]: ПОМОГИТЕ С ПОП3 пожалуйста
От: alshits1  
Дата: 23.04.05 16:24
Оценка:
Здравствуйте, Аноним, Вы писали:

A>>Здравствуйте, Jax, Вы писали:


А>Про последний — есть метод временно выдать буфер как char*. Иначе — класс не знает, что в него что-то пишут...

А>Разделить поля — пока идут строки вида ".*: .*" — это поля заголовка, в начале строки — его имя. Дальше — тело.


Нельзя ли поточнее про разметку. Я watchем в debugere смотрю содержание сообщений сервера и там нет ни точек ни звёздочек. Если не трудно скиньте мне пару ссылок по разметке.
Re[7]: ПОМОГИТЕ С ПОП3 пожалуйста
От: Spidola Россия http://www.usametrics.ru
Дата: 24.04.05 22:21
Оценка:
Здравствуйте, alshits1, Вы писали:

A>Здравствуйте, Аноним, Вы писали:


A>Да и ещё маленький вопрос что такое CRLF?


О! Это то, что я из обсуждаемой темы знаю!

Это сочетание символов "возврат каретки" и "перевод строки" (Carridge Return and Line Feed).
Символы с десятичными кодами 13 и 10 соответственно.

Другим словами, переход на следующую строку или то, что в большинстве случаев попадает в набираемый текст при нажатии Enter на клавиатуре...
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[7]: ПОМОГИТЕ С ПОП3 пожалуйста
От: Jax Россия  
Дата: 25.04.05 06:57
Оценка:
На все вопросы можно найти ответ в предложенных документах...

Итак, открываем и читаем:

Вопрос:
Как разделить поля (Subjeckt To From Body)

Ответ:

Документ RFC 2822:

2.2. Header Fields
Header fields are lines composed of a field name, followed by a colon
(":"), followed by a field body, and terminated by CRLF.

Так же читаем всю секцию посвященную заголовкам, там много интересного! Так же, думаю, будет интересно прочитать несколько разделов в документе RFC 2045 начиная с "3. MIME Header Fields".

Вопрос:
Как мне узнать длину письма, именно письма а не всего сообщения?

Ответ:
А зачем? Ну ладно, один из вариантов. Смотрим, какие команды выполняет POP3 сервер (RFC 1939). Есть команда TOP, которая возвращает заголовок и указанное количество строк тела письма. Также есть команда LIST. Размер_тела_письма = (LIST <msg_num>) — (TOP <msg_num> 0) — 2. Зачем еще отнимать два байта? TOP вместе с заголовком возвращает пустую строку CRLF.

Вопрос:
У меня есть ещё вопрос: почему у меня после команды сенд юзера от сервера приходит сообщение такое.

Ответ:
Возможно ты не читаешь ответ сервера на какую-нибудь команду.

Вопрос:
Нельзя ли поточнее про разметку. Я watchем в debugere смотрю содержание сообщений сервера и там нет ни точек ни звёздочек. Если не трудно скиньте мне пару ссылок по разметке.

Ответ:
Смотри ответ на первый вопрос. Читай документацию!

Про CRLF уже ответили Удачи! А может тебе взять уже готовую реализацию POP3 клиента с с ней разобраться?
Re[8]: ПОМОГИТЕ С ПОП3 пожалуйста
От: alshits1  
Дата: 25.04.05 16:28
Оценка:
Здравствуйте, Jax

Спасибо огромное. Просто очень огромное.
А нет ли у кого готового ПОП3 клиента, может и правда можно разобраться на деле.
Напишите кто-нить ссылку или файл киньте alshits1@yandex.ru
Re[8]: ПОМОГИТЕ С ПОП3 пожалуйста
От: alshits1  
Дата: 25.04.05 16:46
Оценка:
Здравствуйте, Jax,

Не смотря на все ваши стпрания у меня всё ещё остались вопросы:
Всё же почему сервер шлёт мне строку где сначала написано ошибка а потом уже OK
"-ERR Unknown command: ""
+OK tmp666@mail.ru maildrop has 1 meesages
"
Это происходит при проверке пароля.
Вот весь код функции:

void CPostView::OnCommandsConnect()
{
// TODO: Add your command handler code here
CPostDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

char chr[255]="";
char chr1[255]="";
char chr2[255]="";
char chr3[3000]="";
char chr4[3000]="";
char user[]="USER tmp666\n";
char pass[]="PASS 1988\n";
char retr[]="RETR 1\n";
char top[]="TOP 1 10\n";
int e;
int r;
/////////////////
pDoc->gad=new CGad;
pDoc->gad->Create();
/////////////////
if(pDoc->gad->Connect("POP3.mail.ru",110)==TRUE)
{
/////////HELLOW SERVER////////////////////////////
pDoc->gad->Receive(&chr,sizeof(chr),0);
MessageBox(chr,"SERVER",MB_OK);
/////////USER/////////////////////////////////////
e=pDoc->gad->Send(user,sizeof(user),0);
r=pDoc->gad->Receive(&chr1,sizeof(chr1),0);
MessageBox(chr1,"SERVER",MB_OK);
/////////PASSWORD/////////////////////////////////
e=pDoc->gad->Send(pass,sizeof(pass),0);
r=pDoc->gad->Receive(&chr2,sizeof(chr2),0);
MessageBox(chr2,"SERVER",MB_OK);
/////////AUTORIZATION END/////////////////////////
}
}
Re[9]: ПОМОГИТЕ С ПОП3 пожалуйста
От: Jax Россия  
Дата: 26.04.05 06:04
Оценка:
Здравствуйте, alshits1, Вы писали:

A>Здравствуйте, Jax,


A>Не смотря на все ваши стпрания у меня всё ещё остались вопросы:

A>Всё же почему сервер шлёт мне строку где сначала написано ошибка а потом уже OK
A>"-ERR Unknown command: ""
A>+OK tmp666@mail.ru maildrop has 1 meesages
A>"
A>Это происходит при проверке пароля.
A>Вот весь код функции:

A> char user[]="USER tmp666\r\n";

A> char pass[]="PASS 1988\r\n";
A> char retr[]="RETR 1\r\n";
A> char top[]="TOP 1 10\r\n";

Уже не один раз говорили, что команда должна заканчиваться последовательностью CRLF, т.е. \r\n!

Некоторые POP3 клиенты и не только можно посмотреть здесь.
Re[10]: ПОМОГИТЕ С ПОП3 пожалуйста
От: alshits1  
Дата: 26.04.05 17:08
Оценка:
Здравствуйте, Jax, Вы писали:

Jax>Здравствуйте, alshits1, Вы писали:


A>>Здравствуйте, Jax,


A>>Не смотря на все ваши стпрания у меня всё ещё остались вопросы:

A>>Всё же почему сервер шлёт мне строку где сначала написано ошибка а потом уже OK
A>>"-ERR Unknown command: ""
A>>+OK tmp666@mail.ru maildrop has 1 meesages
A>>"
A>>Это происходит при проверке пароля.
A>>Вот весь код функции:

A>> char user[]="USER tmp666\r\n";

A>> char pass[]="PASS 1988\r\n";
A>> char retr[]="RETR 1\r\n";
A>> char top[]="TOP 1 10\r\n";

Jax>Уже не один раз говорили, что команда должна заканчиваться последовательностью CRLF, т.е. \r\n!


Jax>Некоторые POP3 клиенты и не только можно посмотреть здесь.


Слушай ну я же тоже не совсем тупой (тупой конечно но не очень), раз сказали \r\n то я так и написал но сервак всё равно шлёт эти строки, а потом я уже стал экспериментировать...
Так что проблема не в этом. Если знаешь в чём ещё может быть напиши пожалуйста.
И кроме этого у меня ещё вопрос: как закрыть, заблокировать порт?
Re[10]: ПОМОГИТЕ С ПОП3 пожалуйста
От: alshits1  
Дата: 30.04.05 16:05
Оценка:
UP
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.