你看看吧 unit Unit1;interfaceuses Windows, Messages,SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Psock, NMpop3, ComCtrls, Buttons, DBCtrls, DBTables, Db, DBClient, Mask, ExtCtrls, Grids, DBGrids;type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; NMPOP31: TNMPOP3; BitBtn2: TBitBtn; BitBtn3: TBitBtn; SpeedButton1: TSpeedButton; ListBox1: TListBox; ClientDataSet1: TClientDataSet; DataSource1: TDataSource; Table1: TTable; DBRichEdit1: TDBRichEdit; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBNavigator1: TDBNavigator; Panel1: TPanel; Memo2: TMemo; DBGrid1: TDBGrid; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure BitBtn2Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure NMPOP31List(Msg, Size: Integer); procedure NMPOP31ConnectionFailed(Sender: TObject); procedure NMPOP31Success(Sender: TObject); procedure NMPOP31RetrieveStart(Sender: TObject); procedure NMPOP31RetrieveEnd(Sender: TObject); procedure ComboBox1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); procedure SpeedButton1Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); private // look:boolean; M: Integer; Options: TStringList;{ Private declarations } procedure AddOpt; public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.AddOpt; begin if NMPOP31.Connected then NMPOP31.Disconnect; NMPOP31.UserID:=Edit1.Text; NMPOP31.Password:=Edit2.text; NMPOP31.Host:=Edit3.text; end; procedure TForm1.FormCreate(Sender: TObject); begin M:=1; Options:= TStringList.Create; Options.LoadFromFile('Options.txt'); Edit1.Text:=Options.Strings[0]; Edit2.Text:=Options.Strings[1]; Edit3.Text:=Options.Strings[2]; AddOpt; end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Options.Strings[0]:=Edit1.Text; Options.Strings[1]:=Edit2.Text; Options.Strings[2]:=Edit3.Text; // Options.Strings[3]:=Edit4.Text; Options.SaveToFile('Options.txt'); end;procedure TForm1.BitBtn2Click(Sender: TObject); begin // look:=false; if not NMPOP31.Connected then begin AddOpt; NMPOP31.Connect; end; NMPOP31.List;end;procedure TForm1.BitBtn3Click(Sender: TObject); begin if not NMPOP31.Connected then begin AddOpt; NMPOP31.Connect; end; Label7.Caption:=IntTostr(NMPOP31.MailCount); end;procedure TForm1.NMPOP31List(Msg, Size: Integer); begin ListBox1.Items.Add('Message '+IntToStr(Msg)+': '+IntToStr(Size)+' bytes'); end;procedure TForm1.NMPOP31ConnectionFailed(Sender: TObject); begin ShowMessage('没连接上!'); Memo2.Lines.Add('没连接上!'); end;procedure TForm1.NMPOP31Success(Sender: TObject); begin Memo2.Lines.Add('接收完毕。'); end;procedure TForm1.NMPOP31RetrieveStart(Sender: TObject); begin Memo2.Lines.Add('开始接收'); end;procedure TForm1.NMPOP31RetrieveEnd(Sender: TObject); begin // if Look then // begin ClientDataSet1.Append; ClientDataSet1.FieldByName('序号').AsInteger:=ClientDataSet1.RecordCount+1; DBRichEdit1.Text := NMPOP31.MailMessage.Body.Text; DBEdit1.Text := NMPOP31.MailMessage.Subject; DBEdit2.Text := NMPOP31.MailMessage.From; ClientDataSet1.FieldByName('日期').AsDateTime:=now; ClientDataSet1.Post; Memo2.Lines.Add('接收完毕。'); // end else begin // ListBox1.Items.Add(NMPOP31.MailMessage.Subject); // end; end;procedure TForm1.ComboBox1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); begin if not NMPOP31.Connected then begin AddOpt; NMPOP31.Connect; end;end;procedure TForm1.SpeedButton1Click(Sender: TObject); begin NMPOP31.DeleteMailMessage(M); end;procedure TForm1.ListBox1Click(Sender: TObject); begin // look:=true; if not NMPOP31.Connected then begin AddOpt; NMPOP31.Connect; end; if NMPOP31.MailCount > 0 then begin M:=ListBox1.itemindex+1; If (M < 1) or (M > NMPOP31.MailCount) then ShowMessage('邮件号不对!') else NMPOP31.GetMailMessage(M); end else ShowMessage('不能取得邮件!'); end;end.
to gaochunguang: 程序里并没有处理id/password错误的信息呀
我也很气愤!这样行吗? // look:=false; ListBox1.Items.Clear; if not NMPOP31.Connected then begin AddOpt; try NMPOP31.Connect; except NMPOP31.UserID:='Email'; NMPOP31.Password:='password'; NMPOP31.Host:='163.net'; NMPOP31.Connect; end; end; if NMPOP31.Connected then NMPOP31.List;
呵呵,不是连接不上,是id/password错误的处理!
NMPOP3 is not good. I have used it to develop web-mail , from delphi4 - delphi5, NMPOP3 always contains some bugs. by the way, it is not developed by borland and it is third- party component.
能让我看看你的源码吗?
可是delphi中的例子,写法也是这样???
unit Unit1;interfaceuses
Windows, Messages,SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Psock, NMpop3, ComCtrls, Buttons, DBCtrls, DBTables, Db,
DBClient, Mask, ExtCtrls, Grids, DBGrids;type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
NMPOP31: TNMPOP3;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
SpeedButton1: TSpeedButton;
ListBox1: TListBox;
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
Table1: TTable;
DBRichEdit1: TDBRichEdit;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBNavigator1: TDBNavigator;
Panel1: TPanel;
Memo2: TMemo;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure NMPOP31List(Msg, Size: Integer);
procedure NMPOP31ConnectionFailed(Sender: TObject);
procedure NMPOP31Success(Sender: TObject);
procedure NMPOP31RetrieveStart(Sender: TObject);
procedure NMPOP31RetrieveEnd(Sender: TObject);
procedure ComboBox1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
procedure SpeedButton1Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
private
// look:boolean;
M: Integer;
Options: TStringList;{ Private declarations }
procedure AddOpt;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.AddOpt;
begin
if NMPOP31.Connected then NMPOP31.Disconnect;
NMPOP31.UserID:=Edit1.Text;
NMPOP31.Password:=Edit2.text;
NMPOP31.Host:=Edit3.text;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
M:=1;
Options:= TStringList.Create;
Options.LoadFromFile('Options.txt');
Edit1.Text:=Options.Strings[0];
Edit2.Text:=Options.Strings[1];
Edit3.Text:=Options.Strings[2];
AddOpt;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Options.Strings[0]:=Edit1.Text;
Options.Strings[1]:=Edit2.Text;
Options.Strings[2]:=Edit3.Text;
// Options.Strings[3]:=Edit4.Text;
Options.SaveToFile('Options.txt');
end;procedure TForm1.BitBtn2Click(Sender: TObject);
begin
// look:=false;
if not NMPOP31.Connected then
begin
AddOpt;
NMPOP31.Connect;
end;
NMPOP31.List;end;procedure TForm1.BitBtn3Click(Sender: TObject);
begin
if not NMPOP31.Connected then
begin
AddOpt;
NMPOP31.Connect;
end;
Label7.Caption:=IntTostr(NMPOP31.MailCount);
end;procedure TForm1.NMPOP31List(Msg, Size: Integer);
begin
ListBox1.Items.Add('Message '+IntToStr(Msg)+': '+IntToStr(Size)+' bytes');
end;procedure TForm1.NMPOP31ConnectionFailed(Sender: TObject);
begin
ShowMessage('没连接上!');
Memo2.Lines.Add('没连接上!');
end;procedure TForm1.NMPOP31Success(Sender: TObject);
begin
Memo2.Lines.Add('接收完毕。');
end;procedure TForm1.NMPOP31RetrieveStart(Sender: TObject);
begin
Memo2.Lines.Add('开始接收');
end;procedure TForm1.NMPOP31RetrieveEnd(Sender: TObject);
begin
// if Look then
// begin
ClientDataSet1.Append;
ClientDataSet1.FieldByName('序号').AsInteger:=ClientDataSet1.RecordCount+1;
DBRichEdit1.Text := NMPOP31.MailMessage.Body.Text;
DBEdit1.Text := NMPOP31.MailMessage.Subject;
DBEdit2.Text := NMPOP31.MailMessage.From; ClientDataSet1.FieldByName('日期').AsDateTime:=now;
ClientDataSet1.Post;
Memo2.Lines.Add('接收完毕。');
// end else begin
// ListBox1.Items.Add(NMPOP31.MailMessage.Subject);
// end;
end;procedure TForm1.ComboBox1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
if not NMPOP31.Connected then
begin
AddOpt;
NMPOP31.Connect;
end;end;procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
NMPOP31.DeleteMailMessage(M);
end;procedure TForm1.ListBox1Click(Sender: TObject);
begin
// look:=true;
if not NMPOP31.Connected then
begin
AddOpt;
NMPOP31.Connect;
end;
if NMPOP31.MailCount > 0 then
begin
M:=ListBox1.itemindex+1;
If (M < 1) or (M > NMPOP31.MailCount) then
ShowMessage('邮件号不对!')
else
NMPOP31.GetMailMessage(M);
end
else
ShowMessage('不能取得邮件!');
end;end.
// look:=false;
ListBox1.Items.Clear;
if not NMPOP31.Connected then
begin
AddOpt;
try
NMPOP31.Connect;
except
NMPOP31.UserID:='Email';
NMPOP31.Password:='password';
NMPOP31.Host:='163.net';
NMPOP31.Connect;
end;
end;
if NMPOP31.Connected then
NMPOP31.List;
I have used it to develop web-mail , from delphi4 - delphi5,
NMPOP3 always contains some bugs.
by the way, it is not developed by borland and it is third- party component.