unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdMessageClient, IdSMTP, StdCtrls, WinSkinData;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
GroupBox2: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
Edit4: TEdit;
GroupBox3: TGroupBox;
Label5: TLabel;
Label6: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Button1: TButton;
Button2: TButton;
GroupBox4: TGroupBox;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
memo1: TMemo;
GroupBox5: TGroupBox;
GroupBox6: TGroupBox;
Memo3: TMemo;
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
OpenDialog1: TOpenDialog;
ListBox1: TListBox;
SkinData1: TSkinData;
procedure Button1Click(Sender: TObject);
procedure IdSMTP1Connected(Sender: TObject);
procedure IdSMTP1Disconnected(Sender: TObject);
procedure IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
procedure IdSMTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure Button2Click(Sender: TObject);
procedure ListBox1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if (trim(edit1.Text)='') or (trim(edit2.Text)='') then
begin
showmessage('请设置服务器属性');
edit2.Text:='25';
edit1.SetFocus;
exit;
end;
if (trim(edit3.Text)='') or (trim(edit4.Text)='') then
begin
showmessage('请输入发信人或收件人地址');
edit3.SetFocus;
exit;
end;
if (trim(edit5.Text)='') or (trim(edit6.Text)='') then
begin
showmessage('请正确输入用户登陆信息');
edit5.SetFocus;
exit;
end;
idmessage1.Subject:=edit7.Text;
idmessage1.Body.Assign(memo1.Lines);
idmessage1.From.Address:=trim(edit4.Text);
idmessage1.Recipients.EMailAddresses:=trim(edit3.Text);
idsmtp1.Host:=trim(edit1.Text);
idsmtp1.Port:=strtoint(trim(edit2.Text));
idsmtp1.Username:=trim(edit5.Text);
idsmtp1.Password:=trim(edit6.Text);
memo3.Lines.Add('准备连接到服务器!'+edit1.Text);
try
idsmtp1.Connect();
except
begin
memo3.Lines.Add('无法连接到服务器!'+edit1.Text);
exit;
end;
end;
if (idsmtp1.AuthSchemesSupported.IndexOf('LOGIN')<> -1) then
begin
Memo3.Lines.Add('服务器要求验证');
idsmtp1.AuthenticationType:=atlogin;
memo3.Lines.Add('开始验证');
try
if idsmtp1.Authenticate then
Memo3.Lines.Add('验证通过')
else
Memo3.Lines.Add('验证失败');
except
memo3.Lines.Add('服务器验证失败');
idsmtp1.Disconnect;
exit;
end;
end
else
begin
memo3.Lines.Add('服务器不要求验证');
end;
try
idsmtp1.Send(idmessage1);
except
memo3.Lines.Add('发送失败');
end;
idsmtp1.Disconnect;
end;
procedure TForm1.IdSMTP1Connected(Sender: TObject);
begin
memo3.Lines.Add('已连接到服务器'+edit1.Text);
end;
procedure TForm1.IdSMTP1Disconnected(Sender: TObject);
begin
memo3.Lines.Add('断开连接');
end;
procedure TForm1.IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
memo3.Lines.Add('开始发送邮件');
end;
procedure TForm1.IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
memo3.Lines.Add('正在发送邮件');
end;
procedure TForm1.IdSMTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
memo3.Lines.Add('发送邮件完毕');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Tidattachment.Create(idmessage1.MessageParts,openDialog1.FileName);
listbox1.Items.Add(Opendialog1.FileName);
end;
end;
procedure TForm1.ListBox1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
index:integer;
begin
if listbox1.ItemIndex=-1 then
Exit;
if key<>VK_DELETE then
Exit;
index:=listbox1.ItemIndex;
idmessage1.MessageParts.Delete(index);
listbox1.Items.Delete(index);
end;
end.
控件indy里面都有