请问哪位师兄有收发电子邮件的程序(含源码)?
请问哪位师兄有收发电子邮件的程序(含源码)?谢谢。分数不够可再加。 问题点数:80、回复次数:9Top
1 楼sqq()回复于 2001-12-25 10:55:16 得分 0
我的email是:qbc0325@sina.com。Top
2 楼fei1995(三板斧)回复于 2001-12-25 10:57:18 得分 0
能发一份给我吗?
Fei2001@hotmail.comTop
3 楼wwwwwwww(我我)回复于 2001-12-25 11:01:31 得分 50
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Psock, NMsmtp, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
NMSMTP1: TNMSMTP;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure NMSMTP1Connect(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const BaseTable:string='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
var
Form1: TForm1;
AuthSucc:boolean;// 是否需要密码验证
function DecodeBase64(Source:string):string; //解码函数
function FindInTable(CSource:char):integer; //
function EncodeBase64(Source:string):string; //编码函数
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
NMSMTP1.Host :='smtp.163.net';
NMSMTP1.Port :=25;
NMSMTP1.UserID :='lxh_0';
NMSMTP1.ReportLevel :=1;
NMSMTP1.TimeOut :=10000;
NMSMTP1.Connect;
if AuthSucc=true then ////验证成功
begin
//MailTo:=TStringList.Create;
//MailTo.Add('cunmin1@163.net');
//MailBody.Add('Hello it is a test');
nmsmtp1.PostMessage.FromAddress:='lxh0@263.net'; //发信人的电子邮件地址
nmsmtp1.PostMessage.ToAddress.Add('xcwang@ncu.edu.cn');
nmsmtp1.PostMessage.Body.Text :='test';
nmsmtp1.PostMessage.Subject :='My test';
nmsmtp1.SendMail;
nmsmtp1.Disconnect;
end;
end;
function FindInTable(CSource:char):integer;
begin
result:=Pos(string(CSource),BaseTable)-1;
end;
////
function DecodeBase64(Source:string):string;
var
SrcLen,Times,i:integer;
x1,x2,x3,x4,xt:byte;
begin
result:='';
SrcLen:=Length(Source);
Times:=SrcLen div 4;
for i:=0 to Times-1 do
begin
x1:=FindInTable(Source[1+i*4]);
x2:=FindInTable(Source[2+i*4]);
x3:=FindInTable(Source[3+i*4]);
x4:=FindInTable(Source[4+i*4]);
x1:=x1 shl 2;
xt:=x2 shr 4;
x1:=x1 or xt;
x2:=x2 shl 4;
result:=result+chr(x1);
if x3= 64 then break;
xt:=x3 shr 2;
x2:=x2 or xt;
x3:=x3 shl 6;
result:=result+chr(x2);
if x4=64 then break;
x3:=x3 or x4;
result:=result+chr(x3);
end;
end;
/////
function EncodeBase64(Source:string):string;
var
Times,LenSrc,i:integer;
x1,x2,x3,x4:char;
xt:byte;
begin
result:='';
LenSrc:=length(Source);
if LenSrc mod 3 =0 then Times:=LenSrc div 3
else Times:=LenSrc div 3 + 1;
for i:=0 to times-1 do
begin
if LenSrc >= (3+i*3) then
begin
x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];
xt:=(ord(Source[1+i*3]) shl 4) and 48;
xt:=xt or (ord(Source[2+i*3]) shr 4);
x2:=BaseTable[xt+1];
xt:=(Ord(Source[2+i*3]) shl 2) and 60;
xt:=xt or (ord(Source[3+i*3]) shr 6);
x3:=BaseTable[xt+1];
xt:=(ord(Source[3+i*3]) and 63);
x4:=BaseTable[xt+1];
end
else if LenSrc>=(2+i*3) then
begin
x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];
xt:=(ord(Source[1+i*3]) shl 4) and 48;
xt:=xt or (ord(Source[2+i*3]) shr 4);
x2:=BaseTable[xt+1];
xt:=(ord(Source[2+i*3]) shl 2) and 60;
x3:=BaseTable[xt+1];
x4:='=';
end else
begin
x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];
xt:=(ord(Source[1+i*3]) shl 4) and 48;
x2:=BaseTable[xt+1];
x3:='=';
x4:='=';
end;
result:=result+x1+x2+x3+x4;
end;
end;
procedure TForm1.NMSMTP1Connect(Sender: TObject);
begin
label1.caption:=nmsmtp1.Status;
if nmsmtp1.ReplyNumber = 250 then
label1.caption:=nmsmtp1.Transaction('auth login'); //开始认证
if nmsmtp1.ReplyNumber =334 then //返回值为334,让你输入用BASE64编码后的用户名
label1.caption:=nmsmtp1.Transaction('lxh_0');// 用户名aaaaa
if nmsmtp1.ReplyNumber =334 then // 返回值为334,让你输入用BASE64编码后的用户密码
label1.caption:=nmsmtp1.Transaction('141592'); //密码为123456
if nmsmtp1.ReplyNumber =235 then
begin
label1.caption:='successful';
AuthSucc:=true;
end;
end;
end.
Top
4 楼outer2000(天外流星)回复于 2001-12-25 11:07:32 得分 30
用D6里的INLY吧,没有那么多代码,呵呵。Top
5 楼sqq()回复于 2001-12-25 19:12:47 得分 0
谢了,最好的还是用D6里自带的clientmail.Top
6 楼sqq()回复于 2001-12-25 19:13:35 得分 0
给分了.Top
7 楼Nizvoo()回复于 2001-12-25 19:20:25 得分 0
Nizvoo@etang.comTop
8 楼cdchq(chq)回复于 2001-12-25 19:45:21 得分 0
关注……Top
9 楼Bellamy(酷公爵)回复于 2001-12-25 20:52:42 得分 0
呵呵Top




