请问D7的IdPOP31,怎么用啊.
怎么写收邮件的啊.

解决方案 »

  1.   

    var
      Msg : TIdMessage;
      i, x : integer;
      s : string;
    begin
      IdPOP31.Host    :=  'mail.xxx.co.jp';
      IdPOP31.Port    :=  110;
      IdPOP31.UserId  :=  'userid';
      IdPOP31.Password:=  'password';
      IdPOP31.Connect;
      for i :=  1 to  IdPOP31.CheckMessages do  begin
        Msg :=  TIdMessage.Create(Self);
        IdPOP31.Retrieve(i, Msg);
        Memo1.Lines.Add(Msg.Subject);
        for x :=  0 to  Pred(Msg.MessageParts.Count) do begin
          if Msg.MessageParts.Items[x] is TIdText then  begin   
            s :=  TIdText(Msg.MessageParts.Items[x]).Body.Text;
            Memo1.Lines.Add(jconvert.ConvertJCode(s, SJIS_OUT));
          end;
        end;
      end;
      IdPOP31.Disconnect;
    end;
      

  2.   

    //上面和下面的都是收邮件的例子
    unit FileTransfer_Receivefm; //文件传输_接收interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, IdBaseComponent,
      IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdPOP3,
      IdMessage;type
      TFileTransfer_Receivefrm = class(TForm)
        Panel1: TPanel;
        Label1: TLabel;
        MmoEmailAddress: TMemo;
        Label2: TLabel;
        LbEmailSavePath: TLabel;
        BtnSavePathSelect: TBitBtn;
        BtnReceiveEmail: TBitBtn;
        BtnClose: TBitBtn;
        Bevel1: TBevel;
        PalHideTips: TPanel;
        StatusBar1: TStatusBar;
        ProgressBar1: TProgressBar;
        IdPOP31: TIdPOP3;
        IdMessage1: TIdMessage;
        procedure BtnCloseClick(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormDestroy(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure BtnSavePathSelectClick(Sender: TObject);
        procedure IdPOP31Status(ASender: TObject; const AStatus: TIdStatus;
          const AStatusText: String);
        procedure BtnReceiveEmailClick(Sender: TObject);
        procedure MmoEmailAddressChange(Sender: TObject);
        procedure IdPOP31Connected(Sender: TObject);
      private
        //窗口初始化
        procedure InitialWindows ;
        //收邮件
        procedure ReceiveEmail ;
        //删除邮件
        procedure DeleteEmail (Const EmailId : Integer) ; 
      public
        { Public declarations }
      end;var
      FileTransfer_Receivefrm: TFileTransfer_Receivefrm;implementation
    uses FileCtrl ;
    {$R *.dfm}Const
      SelectPathTips = '请选择文件保存路径' ;procedure TFileTransfer_Receivefrm.BtnCloseClick(Sender: TObject);
    begin
      Close ; 
    end;procedure TFileTransfer_Receivefrm.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
      action := cafree ; 
    end;procedure TFileTransfer_Receivefrm.FormDestroy(Sender: TObject);
    begin
      FileTransfer_Receivefrm := nil ;
    end;procedure TFileTransfer_Receivefrm.InitialWindows;
    begin
      LbEmailSavePath.Caption := SelectPathTips ;
      PalHideTips.Visible := false ;
      PalHideTips.Height := StatusBar1.Height ;
      StatusBar1.Align := alBottom ;
      StatusBar1.Visible := true ;
      ProgressBar1.Visible := false ;
      ProgressBar1.Height := StatusBar1.Height ;
      ProgressBar1.Width := StatusBar1.Width ;
      BtnReceiveEmail.Enabled := false ;
    end;procedure TFileTransfer_Receivefrm.FormShow(Sender: TObject);
    begin
      InitialWindows   ;
    end;
    procedure TFileTransfer_Receivefrm.BtnSavePathSelectClick(Sender: TObject);
    var
      Tmp :string ;
    begin
      if  SelectDirectory('请选择文件保存路径','D:',Tmp) then begin
         LbEmailSavePath.Caption := Tmp ;
         if SysUtils.DirectoryExists(Tmp) = false then begin
           LbEmailSavePath.Caption := SelectPathTips ;
           Application.MessageBox('您选择的路径不合法,请重新选择!','选择提示',MB_ICONINFORMATION) ;
         end ;
      end
      else
        LbEmailSavePath.Caption := SelectPathTips ;  if (Trim(MmoEmailAddress.Text) <> '') and (LbEmailSavePath.Caption <> SelectPathTips) then
        BtnReceiveEmail.Enabled := true
      else
        BtnReceiveEmail.Enabled := false ; 
    end;procedure TFileTransfer_Receivefrm.ReceiveEmail;
    var
      EmailTotalNum , TmpNum , I : integer ;
      MessageCount : integer ;
    begin
      if IdPOP31.Connected then  begin
        IdPOP31.DisconnectSocket ;
        IdPOP31.Disconnect ; 
      end ;  with IdPOP31 do
      begin
        IdPOP31.Host := 'pop.21cn.com'  ;
        IdPOP31.Username := '用户名' ;
        IdPOP31.Password := '密码' ;
        try
          IdPOP31.Connect();
        Except
          IdPOP31.DisconnectSocket ;
          IdPOP31.Disconnect ;
          Application.MessageBox('登录远程服务器时出现错误','连接错误',MB_ICONEXCLAMATION) ; 
        end ;
        try
          EmailTotalNum := IdPOP31.CheckMessages  ;
          StatusBar1.SimpleText := '共有'+ inttostr(EmailTotalNum) + ' 封邮件' ;
          if EmailTotalNum > 0 then
           begin
             for TmpNum := 1 to EmailTotalNum do
              begin
                IdMessage1.Clear ;
                try
                  IdPOP31.Retrieve(TmpNum,IdMessage1) ;
                Except
                  IdPOP31.DisconnectSocket ;
                  IdPOP31.Disconnect ;
                  Application.MessageBox('收取邮件时发生错误!','错误',MB_ICONERROR) ;
                  Break ;
                end ;
                if IdMessage1.MessageParts.Count > 0 then
                begin
                  MessageCount := IdMessage1.MessageParts.Count ;
                  for I := 0 to MessageCount-1 do
                   begin
                     if IdMessage1.MessageParts.Items[I] is TIdAttachment then
                      begin
                        if FileExists(LbEmailSavePath.Caption + TIdAttachment(IdMessage1.MessageParts.Items[I]).FileName) then
                          DeleteFile(LbEmailSavePath.Caption + TIdAttachment(IdMessage1.MessageParts.Items[I]).FileName) ;
                          try
                            TIdAttachment(IdMessage1.MessageParts.Items[I]).SaveToFile(LbEmailSavePath.Caption + TIdAttachment(IdMessage1.MessageParts.Items[I]).FileName) ;
                          Except
                            Application.MessageBox('文件保存失败!','保存失败',MB_ICONERROR) ;
                            IdPOP31.DisconnectSocket ;
                            IdPOP31.Disconnect ;
                            Break ;
                          end ;
                      end ;
                   end ;
                end ;
                //删除已收到本地的邮件
                try
                  IdPOP31.Delete(TmpNum) ;
                Except
                  Continue ; 
                end ;
              end ;
           end ;    Finally
          IdPOP31.DisconnectSocket ;
          IdPOP31.Disconnect ;
        end ;
      end ;
    end;procedure TFileTransfer_Receivefrm.IdPOP31Status(ASender: TObject;
      const AStatus: TIdStatus; const AStatusText: String);
    begin
      PalHideTips.Visible :=  true ;
      if AStatus = hsResolving then
        StatusBar1.SimpleText := '正在解析主机地址....' ;  if AStatus = hsConnecting then
        StatusBar1.SimpleText := '正在登录邮件服务器....' ;
    end;procedure TFileTransfer_Receivefrm.BtnReceiveEmailClick(Sender: TObject);
    begin
      PalHideTips.Visible := true ;
      PalHideTips.Align := alTop ;
      ReceiveEmail ;
    end;procedure TFileTransfer_Receivefrm.MmoEmailAddressChange(Sender: TObject);
    begin
      if (Trim(MmoEmailAddress.Text) <> '') and (LbEmailSavePath.Caption <> SelectPathTips)
        then
        BtnReceiveEmail.Enabled := true
      else
        BtnReceiveEmail.Enabled := false ; 
    end;procedure TFileTransfer_Receivefrm.DeleteEmail (Const EmailId : Integer);
    beginend;procedure TFileTransfer_Receivefrm.IdPOP31Connected(Sender: TObject);
    begin
      StatusBar1.SimpleText := '成功登录邮件服务器,正在准备收取邮件....' ; 
    end;end.