procedure SendMail;
type zawartosc=array[1..57] of char;
var WSAData:TWSAData;
sock,i:integer;
sa:tsockaddrin;
wiadomosc:string[100];
zalacznik:file of char;
linia:zawartosc;
zrobiono,zrobione:longword;
function odbierz(s:integer):pchar;
var buf:array[0..99] of char;
begin
recv(s,buf,sizeof(buf),0);
result:=buf;
end;
procedure wyslij(s:integer;co:string);
var buf:array[0..99] of char;
j:byte;
begin
fillchar(buf,100,0);
for j:=1 to length(co) do
begin
buf[j-1]:=co[j];
end;
send(s,buf,sizeof(buf),0);
end;
begin
WSAStartup(makeword(2,0),WSAData);
sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if sock=INVALID_SOCKET then
begin
end;
if SOCKET_ERROR=WSAAsyncSelect(sock,xMainWnd,WM_USER+1,FD_CONNECT or FD_READ or FD_WRITE) then
begin
end;
sa.sin_family:=AF_INET;
sa.sin_port:=htons(25);
sa.sin_addr.s_addr:=inet_addr(PChar('212.126.20.60'));
bind(sock,sa,sizeof(sa));
connect(sock,sa,sizeof(sa));
wiadomosc:=odbierz(sock); // 250 ...
wyslij(sock,'EHLO smtp.o2.pl');
wiadomosc:=odbierz(sock); // 250 ...
wyslij(sock,'MAIL From:<'+mailod+'>');
wiadomosc:=odbierz(sock); // 250 ...
wyslij(sock,'RCPT To:<'+mail+'>');
wiadomosc:=odbierz(sock); // 250 ...
wyslij(sock,'DATA');
wiadomosc:=odbierz(sock); // 354 ...
wyslij(sock,'From: <'+mailod+'>');
wyslij(sock,'To: <'+mail+'>');
wyslij(sock,'subject: temat');
wyslij(sock,'MIME-Version: 1.0');
wyslij(sock,'Content-Type: multipart/mixed; boundary="gc0p4Jq0M2Yt08jU534c0p"');
wyslij(sock,'This is a multi-part message in MIME format...');
wyslij(sock,'--gc0p4Jq0M2Yt08jU534c0p');
wyslij(sock,'Content-Type: text/plain');
wyslij(sock,'Content-Disposition: inline');
wyslij(sock,'');
wyslij(sock,'INFO');
wyslij(sock,'--gc0p4Jq0M2Yt08jU534c0p');
wyslij(sock,'Content-Type: application/octream; name="1.txt"');
wyslij(sock,'Content-Transfer-Encoding: base64');
wyslij(sock,'Content-Disposition: attachement; filename="1.txt"');
wyslij(sock,'');
AssignFile(zalacznik,'c:\1.txt');
Reset(zalacznik);
zrobiono:=filesize(zalacznik);
repeat
Blockread(zalacznik,linia,SizeOf(linia),zrobione);
wyslij(sock,Base64Encode(linia));
zrobiono:=zrobiono-zrobione;
until zrobiono=0;
CloseFile(zalacznik);
wyslij(sock,'');
wyslij(sock,''); // End of Header
wyslij(sock,'.'); // end of mail
wiadomosc:=odbierz(sock); // 250 ...
wyslij(sock,'QUIT');
wiadomosc:=odbierz(sock); // 250 ...
closesocket(sock);
WSACleanup;
end;
Mam oto taki powyzszy kod i niby wszystko jest OK, bledow nie wywala, kompiluje sie i laczy, ale po odebraniu pierwszej wiadomosci od serwera gdy cos wysle i probuje odebrac nastepna zamiast standardowej odpowiedzi otrzymuje jakby fragment tego co przed chwila wysylalem a na po kilku takich operacjach 'wiadomosc' jest pusta. Co jest zle i jak to przerobic zeby dzialalo?