你用的host 是哪个,我用163.net 没问题。

解决方案 »

  1.   

    to gaochunguang: 163.NET我也试了,有同样的问题.
    能让我看看你的源码吗?
      

  2.   

    我想错误可能是nmpop31.contect还没彻底执行完,又让它执行重新执行
    可是delphi中的例子,写法也是这样???
      

  3.   

    你看看吧
    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.
      

  4.   

    to gaochunguang: 程序里并没有处理id/password错误的信息呀
      

  5.   

    我也很气愤!这样行吗?
    //  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;
      

  6.   

    呵呵,不是连接不上,是id/password错误的处理!
      

  7.   

    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.