这是我用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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货