Delphi2009的Indy全接触之SMTP篇
2008-10-15 15:07
357 查看
使用TIdSMTP及TIdMessage控件实现邮件发送功能。
如下图所示新建工程:
后台代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
IdSMTP;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
ListBox1: TListBox;
Button1: TButton;
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
memoMsg: TMemo;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
procedure FormCreate(Sender: TObject);
procedure IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure Status(AMsg: string);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses INIFiles;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False;
try
with IdMessage1 do begin
Clear;
From.Text := Trim(Edit1.Text);
Recipients.Add.Text := Trim(Edit2.Text);
Subject := Trim(Edit5.Text);
Body.Assign(memoMsg.Lines);
end;
with IdSMTP1 do begin
Host := Trim(Edit6.Text);
Username := Edit3.Text;
Password := Edit4.Text;
Connect; try
Send(IdMessage1);
finally
Disconnect;
end;
end;
Status('Completed');
finally
Button1.Enabled := True;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
LINIFile: string;
begin
LINIFile := 'c:/SMTP.ini';
if FileExists(LINIFile) then begin
with TINIFile.Create(LINIFile) do
try
Edit1.Text := ReadString('Main', 'From', '');
Edit2.Text := ReadString('Main', 'To', '');
Edit3.Text := ReadString('Main', 'UserName', '');
Edit4.Text := ReadString('Main', 'Password', '');
Edit5.Text := ReadString('Main', 'Subject', '');
Edit6.Text := ReadString('Main', 'SMTP Server', '');
memoMsg.Lines.Text := ReadString('Main', 'Message', '');
finally
Free;
end;
end;
end;
procedure TForm1.IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
begin
Status(AStatusText);
end;
procedure TForm1.Status(AMsg: string);
begin
ListBox1.ItemIndex := ListBox1.Items.Add(AMsg);
Application.ProcessMessages;
Application.ProcessMessages;
Application.ProcessMessages;
end;
end.
在C盘根目录下新建文件:SMTP.ini
文件内容格式如下:
[Main]
From=XXXXXXXX@sina.com
To=ZZZZZZZZ@hotmail.com
Subject=Test
SMTP Server=smtp.sina.com
Message=I Miss You!
UserName=XXXXXXXX
Password=YYYYYYYY
如下图所示新建工程:
后台代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
IdSMTP;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
ListBox1: TListBox;
Button1: TButton;
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
memoMsg: TMemo;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
procedure FormCreate(Sender: TObject);
procedure IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure Status(AMsg: string);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses INIFiles;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False;
try
with IdMessage1 do begin
Clear;
From.Text := Trim(Edit1.Text);
Recipients.Add.Text := Trim(Edit2.Text);
Subject := Trim(Edit5.Text);
Body.Assign(memoMsg.Lines);
end;
with IdSMTP1 do begin
Host := Trim(Edit6.Text);
Username := Edit3.Text;
Password := Edit4.Text;
Connect; try
Send(IdMessage1);
finally
Disconnect;
end;
end;
Status('Completed');
finally
Button1.Enabled := True;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
LINIFile: string;
begin
LINIFile := 'c:/SMTP.ini';
if FileExists(LINIFile) then begin
with TINIFile.Create(LINIFile) do
try
Edit1.Text := ReadString('Main', 'From', '');
Edit2.Text := ReadString('Main', 'To', '');
Edit3.Text := ReadString('Main', 'UserName', '');
Edit4.Text := ReadString('Main', 'Password', '');
Edit5.Text := ReadString('Main', 'Subject', '');
Edit6.Text := ReadString('Main', 'SMTP Server', '');
memoMsg.Lines.Text := ReadString('Main', 'Message', '');
finally
Free;
end;
end;
end;
procedure TForm1.IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: string);
begin
Status(AStatusText);
end;
procedure TForm1.Status(AMsg: string);
begin
ListBox1.ItemIndex := ListBox1.Items.Add(AMsg);
Application.ProcessMessages;
Application.ProcessMessages;
Application.ProcessMessages;
end;
end.
在C盘根目录下新建文件:SMTP.ini
文件内容格式如下:
[Main]
From=XXXXXXXX@sina.com
To=ZZZZZZZZ@hotmail.com
Subject=Test
SMTP Server=smtp.sina.com
Message=I Miss You!
UserName=XXXXXXXX
Password=YYYYYYYY
相关文章推荐
- Delphi2009的Indy全接触之HTTP篇
- Delphi2009的Indy全接触之TCP篇
- delphi 开源email客户端 和 indy组件演示程序
- 六、Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...<T> 系列
- Delphi XE7 用indy开发微信公众平台(2)- 获取微信服务器IP地址
- Delphi2009初体验 - 语言篇 - 反射单元ObjAuto的加强
- Delphi 2010 中的泛型(注:Delphi 2009也含有)
- delphi 7 下安装 indy 10.5.8 教程
- Delphi 中Md5获取(Indy 9)
- Delphi2009代码提示功能
- Delphi 7 中使用Indy创建独立的 Web Services/SOAP 服务器(四)
- Delphi 2009 gif动画方法
- 语音聊天程序实现(INDY, ACM, DELPHI)
- 淺談怎么样运用Delphi 2009地泛型容器類別
- delphi 2009 之安装
- Delphi 2009 之 TCategoryPanelGroup[4]: Height
- 在Delphi 7 中用Indy开发Socket应用程序(上)
- 基于Delphi的Socket I/O模型全接触
- Delphi 7以来的Delphi 2009测试版新语法特性
- Delphi与Excel的亲密接触