Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не приходят письма [D7, WinXP]


FatBase ©   (2004-04-29 08:00:00) 

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

function bufsend(txt:string):boolean;
var buf:string;
 send1,TOut:integer;
begin
result:=false;
buf:=txt;
 TOut:=0;
 while true do
 begin
   send1:=send(socks,Buf,length(buf),0);
   showmessage('>'+copy(buf,1,send1)+' Sended '+inttostr(send1)+' from '+inttostr(length(buf)));
   if (send1>=length(buf))or(TOut>666) then
     break;
   buf:=copy(buf,send1,length(buf));
   inc(TOut);
   sleep(100);
 end;
if send1>=length(buf) then result:=true;
end;

procedure Run(STo,SFrom,text:string);
var buf:string;
   buf1:string;
d:boolean;
cnt,err,send1,TOut:integer;
begin
 buf:='1'+#13#10;
 err:=send(socks,Buf,length(buf),0);
 if err=SOCKET_ERROR then
 exit;
 bufsend('HELO mailserver'+#10);
 bufsend('MAIL FROM:'+SFrom+#10);
 bufsend('RCPT TO:'+STo+#10);
 bufsend('DATA'+#10);
 bufsend('hello'+#10);
 bufsend('.'+#10);
 bufsend('QUIT'+#10);
end;

Заранее спасибо.


FatBase   (2004-05-01 04:11:00) [1]

Почемуто команда send всегда принимает результат равный размеру моего буфера и хотябы раз меньше, программа ничего отослать не успела, а результат уже есть !?. У меня программа должна сгенерировать письмо и отослать, но не успеваю я её запустить как она закрывается, мол выполнив все операции, в пошаговом режиме всё происходит замечательно, даже send становится блокирующей функцией?! Как бороться, подскажите пожалуйста.


Verg   (2004-04-29 09:08:00) [2]

function bufsend(txt:string):boolean;
var send1,TOut:integer;
begin
result:=false;
TOut:=1;
while TOut <= length(Txt) do
begin
  send1:=send(socks, Txt[TOut], length(Txt)- TOut + 1, 0);
  if send1 > 0 then
    Inc(Tout, send1)
  else
    break;
end;

result := TOut > length(Txt);

end;


Verg   (2004-04-29 09:02:00) [3]

buf[1]


Reindeer Moss Eater   (2004-04-29 08:37:00) [4]

Сервер кроме того, что принимает всю эту ботву, он еще и отвечает на нее кодами возврата.
Это что бы у клиента не возникало ложного ощущуения что ведь вроде бы всё правильно


Наверх

Титульная страница Поиск, карта сайта Написать письмо