【delphi开源代码栏目提醒】:网学会员为广大网友收集整理了,frm_ReceveMail.pas,希望对大家有所帮助!
unit frm_ReceveMail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdMessageClient, IdPOP3, ComCtrls,IdMessage, XPMan;
type
TFrmRecevMail = class(TForm)
POP: TIdPOP3;
GBxConne: TGroupBox;
EdServer: TEdit;
EdUserName: TEdit;
EdPass: TEdit;
EdPort: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
GBxMail: TGroupBox;
BtnConne: TButton;
LVHeaders: TListView;
BtnRecev: TButton;
BtnClose: TButton;
GroupBox1: TGroupBox;
REText: TRichEdit;
procedure BtnConneClick(Sender: TObject);
procedure BtnRecevClick(Sender: TObject);
procedure BtnCloseClick(Sender: TObject);
private
MsgCount:Integer;
MailBoxSize:integer;
Procedure ReceveHeaders;
Procedure ConneMail;
Procedure ReceveBody;
{ Private declarations }
public
{ Public declarations }
end;
var
FrmRecevMail: TFrmRecevMail;
implementation
{$R *.dfm}
Procedure TFrmRecevMail.ConneMail;
begin
if pop.Connected then
Pop.Disconnect;
Pop.Host:=EdServer.Text;
Pop.Port:=strtoint(EdPort.Text);
Pop.Username:=EdUserName.Text;
Pop.Pass
word:=EdPass.Text;
try
Pop.Connect;
MailBoxSize:=Pop.RetrieveMailBoxSize div 1024;
except
ShowMessage('无法连接到服务器!');
end;
end;
Procedure TFrmRecevMail.ReceveBody;
var
MailMessage:TIDMessage;
//Body:TListItem;
i:integer;
begin
MailMessage:=TIDMessage.Create(nil);
REText.Clear;
MailMessage.Clear;
Pop.Retrieve(LvHeaders.Selected.Index+1,MailMessage);
ReText.Lines.Add(MailMessage.From.Text);
ReText.Lines.Add(MailMessage.CCList.EMailAddresses);
ReText.Lines.Add(Mailmessage.Organization);
ReText.Lines.Add(MailMessage.Subject);
ReText.Lines.Add(DateTimetostr(MailMessage.Date));
//ReText.Lines.Add(MailMessage.);
for i:=0 to Pred(MailMessage.MessageParts.count) do
begin
if MailMessage.MessageParts.Items[i] is TIDText then
begin
ReText.Lines.AddStrings(TIDText(MailMessage.MessageParts.Items[i]).body);
end;
end;
end;
Procedure TFrmRecevMail.ReceveHeaders;
var
MailMessage:TIDMessage;
item:TListItem;
i:integer;
begin
if Pop.Connected then
begin
MsgCount:=Pop.CheckMessages;
MailMessage:=TIDMessage.Create(nil);
lvHeaders.Items.Clear;
for i:=0 to MsgCount do
begin
Application.ProcessMessages;
MailMessage.Clear;
Pop.RetrieveHeader(MsgCount,MailMessage);
item:=LvHeaders.Items.Add;
Item.Caption:=MailMessage.Subject;
Item.SubItems.Add(MailMessage.From.Text);
Item.SubItems.Add(inttostr(Pop.RetrieveMsgSize(i)));
//Item.SubItems.Add(Pop.RetretriveUidl(i));
end;
MailMessage.Free;
end;
end;
procedure TFrmRecevMail.BtnConneClick(Sender: TObject);
begin
ConneMail;
ReceveHeaders;
end;
procedure TFrmRecevMail.BtnRecevClick(Sender: TObject);
begin
ReceveBody;
end;
procedure TFrmRecevMail.BtnCloseClick(Sender: TObject);
begin
if Pop.Connected then
Pop.Disconnect;
Close;
end;
end.