手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

直接用WinSock API 发E-mail.

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

SendData(''''Subject: '''' Subject);
SendData(''''From: "'''' mFromName ''''" <'''' mfrom ''''>'''');
SendData(''''To: '''' mToName);
SendData(''''Mime-Version: 1.0'''');
SendData(''''Content-Type: multipart/related; boundary="Esales-Order";'''');
SendData('''' type="text/html"'''');
SendData('''''''');
SendData(''''--Esales-Order'''');
SendData(''''Content-Type: text/html;'''');
SendData('''' charset="iso-8859-9"'''');
SendData(''''Content-Transfer-Encoding: QUOTED-PRINTABLE'''');
SendData('''''''');
for cnt := 0 to mbody.Count - 1 do
SendData(mbody[cnt]);
Senddata('''''''');
SendData(''''--Esales-Order--'''');
Senddata('''' '''');
mSMTPErrText := SendCommand(crlf ''''.'''' crlf);
try
mSMTPErrCode := StrToInt(Copy(mSMTPErrText, 1, 3));
except
end
;
SendData(''''QUIT'''');
DisConnectServer;
end;
end;


function Stat: string;
var
s: string;
begin
s := ReadCommand;
Result := s;
end;

function EchoCommand(Command: string): string;
begin
SendCommand(Command);
Result := ReadCommand;
end;

function ReadCommand: string;
var
tmp: string;
begin
repeat
ReadLn(mfin, tmp);
if Assigned(mmemo) then
mmemo.Lines.Add(tmp);
until (Length(tmp) < 4) or (tmp[4] <> ''''-'''');
Result := tmp
end;

function SendData(Command: string): string;
begin
Writeln(mfout, Command);
end;

function SendCommand(Command: string): string;
begin
Writeln(mfout, Command);
Result := stat;
end;

function SendCommandWin(Command: string): string;
begin
Writeln(mfout, Command #13);
Result := stat;
end;

function FillBlank(Source: string; number: Integer): string;
var
a: Integer;
begin
Result := '''''''';
for a := Length(trim(Source)) to number do
Result := Result '''' '''';
end;

function IpToLong(ip: string): Longint;
var
x, i: Byte;
ipx: array[0..3] of Byte;
v: Integer;
begin
Result := 0;
Longint(ipx) := 0;
i := 0;
for x := 1 to Length(ip) do
if
ip[x] = ''''.'''' then
begin
Inc(i);
if i = 4 then Exit;
end
else
begin
if not
(ip[x] in [''''0''''..''''9'''']) then Exit;
v := ipx[i] * 10 Ord(ip[x]) - Ord(''''0'''');
if v > 255 then Exit;
ipx[i] := v;
end;
Result := Longint(ipx);
end;

function HostToLong(AHost: string): Longint;
var
Host: PHost;
begin
Result := IpToLong(AHost);
if Result = 0 then
begin
Host := GetHostByName(PChar(AHost));
if Host <> nil then Result := Longint(Host^.Addr^^);
end;
end;

function LongToIp(Long: Longint): string;
var
ipx: array[0..3] of Byte;
i: Byte;
begin
Longint(ipx) := long;
Result := '''''''';
for i := 0 to 3 do Result := Result IntToStr(ipx[i]) ''''.'''';
SetLength(Result, Length(Result) - 1);
end;

procedure Disconnect(Socket: Integer);
begin
ShutDown(Socket, 1);
CloseSocket(Socket);
end;

function CallServer(Server: string; Port: Word): Integer;
var
SockAddr: TSockAddr;
begin
Result := socket(Internet, Stream, 0);
if Result = -1 then Exit;
FillChar(SockAddr, SizeOf(SockAddr), 0);
SockAddr.Family := Internet;
SockAddr.Port := swap(Port);
SockAddr.Addr := HostToLong(Server);
if Connect(Result, SockAddr, SizeOf(SockAddr)) <> 0 then
begin
Disconnect(Result);
Result := -1;
end;
end;

function OutputSock(var F: TTextRec): Integer; far;
begin
if
F.BufPos <> 0 then
begin
Send(F.Handle, F.BufPtr^, F.BufPos, 0);
F.BufPos := 0;
end;
Result := 0;
end;

function InputSock(var F: TTextRec): Integer; far;
var
Size: Longint;
begin
F.BufEnd := 0;
F.BufPos := 0;
Result := 0;
repeat
if
(IoctlSocket(F.Handle, fIoNbRead, Size) < 0) then
begin
EofSock := True;

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!