PDA

Просмотр полной версии : Не пашет отправка мыла :*(


zl0y
04.08.2007, 06:55
Кто может подсказать почему данный код неработает :confused: уже несколько примеров перепробывал,все не пашут хотя баннер на почте 250 тоесть доступ есть :)

program pp;

uses
Windows,SysUtils,winsock,dialogs;
var
S:TSocket;
Addr:TSockAddr;
Data:TWSAData;
Len:integer;
Buf:array[1..100] of char;

procedure SendStr(Str:string);
var C:char;
begin
while (length(Str)>0) do
begin
C:=Str[1];
delete(Str,1,1);
Send(S,C,1,0);
end;
end;

begin
WSAStartup($101,Data);
S:=Socket(AF_Inet,Sock_Stream,0);
Addr.sin_family:=PF_Inet;
Addr.sin_port:=HToNS(25);

//Address of 'smtp.mail.ru' = 194.67.23.111
Addr.sin_addr.S_un_b.s_b1:=chr(194);
Addr.sin_addr.S_un_b.s_b2:=chr(67);
Addr.sin_addr.S_un_b.s_b3:=chr(23);
Addr.sin_addr.S_un_b.s_b4:=chr(111);

FillChar(Addr.sin_zero,SizeOf(Addr.sin_zero),0);
if not (Connect(S,Addr,SizeOf(TSockAddr))=0) then
begin
//error
ShowMessage('Error!');
halt;
end else
begin
ShowMessage(Buf);
SendStr('HELO 1235'+#13#10);
Recv(S,Buf,SizeOf(Buf),MSG_PEEK );
ShowMessage(Buf);
SendStr('MAIL FROM: ms@mail.ru'+#13#10);
Recv(S,Buf,SizeOf(Buf),MSG_PEEK );
ShowMessage(Buf);
SendStr('RCPT TO: z10y@mail.ru'+#13#10);
Recv(S,Buf,SizeOf(Buf),MSG_PEEK );
ShowMessage(Buf);
SendStr('DATA'+#13#10);
Recv(S,Buf,SizeOf(Buf),MSG_PEEK );
ShowMessage(Buf);
SendStr('Helloooooo !'+#13#10);
SendStr('.'+#13#10);
Recv(S,Buf,SizeOf(Buf),MSG_PEEK );
ShowMessage(Buf);
SendStr('QUIT'+#13#10);
Recv(S,Buf,SizeOf(Buf),MSG_PEEK );
ShowMessage(Buf);
shutdown(s,0);
end;
end.

KEZ
04.08.2007, 10:07
После того, как отправишь данные надо ещё перенос строки и точку
SendStr( 'Hello !'+#13#10 );
SendStr( '.'+#13#10 );

groundhog
05.08.2007, 12:16
Один хрен оно не будет работать... Аффтар отправляет почту без авторизации, а эт уже баян... Сто раз говорилось...