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;
//上面和下面的都是收邮件的例子 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.
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;
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.