这是我用winsock作的发邮件的程序,我测试了,连接服务器没有问题,向服务器发送数据也没有问题,可不知道为什么,信箱中就是收不到信,请问这是为什么,怎么实现!这个问题我搜索了网上的很多地方,可是有用的不多,希望这里的高手能指点指点!
 const CRLF=#13#10;function StartNet(host:string;port:integer;var sock:integer):Boolean;
var
  FSocket:integer;
  SockAddrIn:TSockAddrIn;
  err:integer;begin
  err:=WSAStartup($0101,WSAData);
  FSocket:=socket(PF_INET,SOCK_STREAM,IPPROTO_IP);
  host:='61.172.28.121';
  SockAddrIn.sin_addr.s_addr:=inet_addr('61.172.28.121');
  SockAddrIn.sin_family := PF_INET;
  SockAddrIn.sin_port :=htons(port);
  err:=connect(FSocket,SockAddrIn, SizeOf(SockAddrIn));
  if err<>SOCKET_ERROR then begin
   sock:=FSocket;
   Result:=True;
  end else Result:=False;
end;function SendData(FSocket:integer;SendStr:string):integer;
var
DataBuf:array[0..1024] of char;
err:integer;
begin
 strcopy(DataBuf,pchar(SendStr));
 err:=send(FSocket,DataBuf,strlen(DataBuf),MSG_DONTROUTE);
 if err<>SOCKET_ERROR then showmessage(inttostr(err));
 Result:=err;
end;procedure TForm1.Button1Click(Sender: TObject);
var FSocket,err,res:integer;
    Subject,MailText,SendBody:String;
begin
    Subject:='dddddd';
    if StartNet('61.172.28.121',25,FSocket) then begin
      SendData(FSocket,'EHLO 61.172.28.121'+CRLF);
      SendData(FSocket,'MAIL FROM: <wangyan2098.com>'+CRLF);
      SendData(FSocket,'RCPT TO: <[email protected]>'+CRLF); //收信箱地址
      SendData(FSocket,'DATA'+CRLF);
      SendBody:='From:Mir <wangyan2098.com>'+CRLF
               +'To: <[email protected]>'+CRLF   //收信箱地址
               +'Subject:12345?+Subject+CRLF
               +CRLF
               +'.'+CRLF;
      res:=SendData(FSocket,SendBody);
      SendData(FSocket,'QUIT'+CRLF);
      err:=closesocket(FSocket);
      err:=WSACleanup;
    end;
end;