Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Pop3-протокол

8.3K
28 ноября 2004 года
gh05t
10 / / 28.11.2004
НА вашем сайте нашел описание протокола POP3. http://www.codenet.ru/webmast/pop3.php
Как заюзаться этим в Дельфи. Пробовал с помощью ClientSocket. Подключаюсь. Пытаюсь отправить команду USER но не получаю ответа (отправляю методом SendText)? В чем дело, не подскажите, если можете, подскажите примером.
301
28 ноября 2004 года
lord Kelvin
897 / / 08.11.2004
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 //Отправка сообщения
 ClientSocket1->Socket->SendBuf((Edit1->Text+"\r\n").c_str(),Edit1->Text.Length()+2);
}
//-----------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
      TCustomWinSocket *Socket)
{
 //Прием сообщения
 char buf[1024];
 while(Socket->ReceiveLength())
 {
  Socket->ReceiveBuf(buf,1023);
  Memo2->Lines->Append(buf);
 }
}
//-----------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 //Подключение к серверу
 ClientSocket1->Open();
}

Перевести это на Дельфи труда не составит. Не забудь прописать в Host поп3 сервер, а в Port 110 порт.
8.3K
29 ноября 2004 года
gh05t
10 / / 28.11.2004
Честно говоря в С++ я не в зуб ногой :) так что если не сложно, то можно на Дельфи?
301
29 ноября 2004 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by gh05t
Честно говоря в С++ я не в зуб ногой :) так что если не сложно, то можно на Дельфи?


Код:
<Обработчик Нажатия клавищи>
begin
 ClientSocket1.Socket.SendBuf(<Здесь идет команда серверу с переходом на новую строку на конце>,
<Длинна этой самой команды>);
end;
//-----------------------------------------------
<Обработчик ClientSocket Read>
var
   buf = array [0..1024] of char;
begin
 while Socket.ReceiveLength > 0 do
 begin
  Socket.ReceiveBuf(buf,1023);
  Memo2.Lines.Append(buf);
 end;
end;
//-----------------------------------------------
<Другой обработчик Нажатия клавищи>
{
 ClientSocket1.Open;
}
8.3K
29 ноября 2004 года
gh05t
10 / / 28.11.2004
Цитата:
Originally posted by lord Kelvin

Код:
<Обработчик Нажатия клавищи>
begin
 ClientSocket1.Socket.SendBuf(<Здесь идет команда серверу с переходом на новую строку на конце>,
<Длинна этой самой команды>);
end;
//-----------------------------------------------
<Обработчик ClientSocket Read>
var
   buf = array [0..1024] of char;
begin
 while Socket.ReceiveLength > 0 do
 begin
  Socket.ReceiveBuf(buf,1023);
  Memo2.Lines.Append(buf);
 end;
end;
//-----------------------------------------------
<Другой обработчик Нажатия клавищи>
{
 ClientSocket1.Open;
}





Gk большей части я и сам разобрался. Единственный вопрос: в методе SendBuf оба параметра-целые числа, а мне первым надо отправлять строку. Как? Через указатель на строку пробовал - не канает :(

301
30 ноября 2004 года
lord Kelvin
897 / / 08.11.2004
Код:
var
St:TMemoryStream;
p:^Byte;
Size:Integer;
begin
ClientSocket1.Open;
St:=TMemoryStream.Create;
St.LoadFromFile(Edit1.Text);
Size:=St.Size;
ClientSocket1.Socket.SendBuf(Size, SizeOf(Size));
p:=St.Memory;
Size:=ClientSocket1.Socket.SendBuf(p^, St.Size);
St.Free;

Нашел на конкурирующем форуме, потому ссылку дать не имею права.=)
8.3K
30 ноября 2004 года
gh05t
10 / / 28.11.2004
Цитата:
Originally posted by lord Kelvin
Код:
var
St:TMemoryStream;
p:^Byte;
Size:Integer;
begin
ClientSocket1.Open;
St:=TMemoryStream.Create;
St.LoadFromFile(Edit1.Text);
Size:=St.Size;
ClientSocket1.Socket.SendBuf(Size, SizeOf(Size));
p:=St.Memory;
Size:=ClientSocket1.Socket.SendBuf(p^, St.Size);
St.Free;

Нашел на конкурирующем форуме, потому ссылку дать не имею права.=)


Ты загружаешь поток из файла по пути в Edit1, а мне надо само содержимое этого поля. Или предлагаешь все команды писать в отдельные файлы? :)

301
30 ноября 2004 года
lord Kelvin
897 / / 08.11.2004
Тогда убери ЛадФромФиле.=) Я просто код по теме нашел, а вот проверить забыл.=)) Главное помни, что на конце строки отправляемой в pop3 =) должен быть символ перехода на другую строку. (В си - \r\n, в делфи - не знаю)
4.7K
02 декабря 2004 года
WereWolf
7 / / 08.09.2003
Цитата:
Originally posted by lord Kelvin
Тогда убери ЛадФромФиле.=) Я просто код по теме нашел, а вот проверить забыл.=)) Главное помни, что на конце строки отправляемой в pop3 =) должен быть символ перехода на другую строку. (В си - \r\n, в делфи - не знаю)


#10

8.3K
02 декабря 2004 года
gh05t
10 / / 28.11.2004
Цитата:
Originally posted by WereWolf

#10


Вообще то #13+#10. Спасибо, в этом и заключался глюк. Теперь все работает

8.3K
13 декабря 2004 года
gh05t
10 / / 28.11.2004
Народ, а кто знает как обработать вложения в протоколе, а? :roll:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог