var
filename:
string
;
begin
if
idsmtp1
.
Connected
then
idsmtp1
.
Disconnect
else
begin
idsmtp1
.
Host :=
'smtp.usish.com'
;
idsmtp1
.
Username :=
'huang_xiao'
;
idsmtp1
.
Password:=
'huang'
;
idsmtp1
.
authenticationtype:=atlogin;
idsmtp1
.
Port:=
25
;
idsmtp1
.
Connect;
end
;
idmessage1
.
From
.
Address:=
'huang_xiao@usish.com'
;
idmessage1
.
Recipients
.
EMailAddresses:=
'huang_xiao@usish.com'
;
idmessage1
.
From
.
Name:=
'THOMAS'
;
idmessage1
.
Subject:=
'test'
;
idmessage1
.
Body
.
Text:=
'hengheng'
;
filename :=
'c:\x.ods'
;
TIdAttachment
.
Create(IdMessage1
.
MessageParts,filename);
idsmtp1
.
Send(idmessage1);
end
;
1
、创建工程,在窗体中加入IdSMTP1、IdMessage1和IdPOP31(Indy控件标签组)控件各一个。
2
、设置 IdSMTP1
.
Host :=
'SMTP.163.com'
;(我用的是
163
检试,具体也可选择其它服务器) IdSMTP1
.
Username :=
'caoyan528'
;(此处即表示邮箱的帐号名,例如邮箱为:aaaaaa@
163.
com,则Username即为aaaaaa) IdSMTP1
.
Password :=
'XXXXXXXX'
;(此处即为邮箱的密码,如aaaaaa@
163.
com邮箱密码为
123456
,则Password即为
123456
)。
3
、设置IdMessage1
.
From
.
Address :=
'caoyan_528@163.com'
;(注意,此处的邮箱地址应在smtp
.163.
com中存在且就为以上设置的Username),IdMessage1
.
Recipients
.
EMailAddresses := ‘caoyan528@gmail
.
com’(此处表示收件人地址,只要是任何一个存在的邮箱地址即可) IdMessage1
.
Subject:=
'第一个邮件客户端'
;(主题)具体源代码如下:
procedure
TForm1
.
Button4Click(Sender: TObject);
var
filename :
String
;
tmpEMailItem : TIdEMailAddressItem;
begin
try
IdSMTP1
.
Host :=
'SMTP.163.com'
;
IdSMTP1
.
AuthenticationType := atLogin;
IdSMTP1
.
Username :=
'caoyan_528'
;
IdSMTP1
.
Password :=
'XXXXXX'
;
filename :=
'E:\邮件发送程序\2003-12-22_253_04.jpg'
;
TIdAttachment
.
Create(IdMessage1
.
MessageParts,filename);
IdMessage1
.
From
.
Address :=
'caoyan_528@163.com'
;
IdMessage1
.
Recipients
.
EMailAddresses:=
'caoyan528@gmail.com'
;
tmpEMailItem := IdMessage1
.
Recipients
.
Add;
tmpEMailItem
.
Text :=
'caoyan528@gmail.com'
;
idMessage1
.
BccList
.
Add
.
Text :=
'caoyan_528@yahoo.com.cn'
;
idMessage1
.
BccList
.
Add
.
Text :=
'caoyan_528@163.com'
;
IdMessage1
.
Subject:=
'第一个邮件客户端'
;
IdMessage1
.
Body
.
Text := Memo1
.
Text;
IdMessage1
.
CharSet :=
'gb2312'
;
IdMessage1
.
Body
.
Assign(Memo1
.
Lines);
if
IdSMTP1
.
AuthSchemesSupported
.
IndexOf(
'LOGIN'
)>-
1
then
begin
IdSMTP1
.
AuthenticationType := atLogin;
IdSMTP1
.
Authenticate;
end
;
IdSMTP1
.
Connect();
IdSMTP1
.
Authenticate;
IdSMTP1
.
Send(IdMessage1);
finally
IdSMTP1
.
Disconnect;
end
;
end
;
自此,memo1中所写的内容被当作邮件发送了出去。而filename所指的附件也一同被发送到了服务器。
4
、接收邮件
收以上的流程图不难看出,接收邮件完全是POP3服务器来完成的,客户只需连接到POP3服务器即可下载邮件。具体做法如下:
设置IdPOP31
.
Host := POP
.163.
com IdPOP31
.
Username :=
'caoyan_528'
; IdPOP31
.
Password:=
'XXXXX'
; (此处的设置与SMTP的设置相同) 源代码如下:
procedure
TForm1
.
Button5Click(Sender: TObject);
var
mailcount :
integer
;
i :
integer
;
tmp :
string
;
begin
IdPOP31
.
Connect();
mailcount := IdPOP31
.
CheckMessages;
for
i:=
1
to
mailcount
do
begin
IdMessage1
.
Clear;
IdPOP31
.
retrieveHeader(i,IdMessage1);
tmp := IdMessage1
.
Subject;
Memo1
.
Lines
.
Add(tmp);
IdPOP31
.
Retrieve(i,IdMessage1);
tmp := IdMessage1
.
Body
.
Text;
memo1
.
Lines
.
Add(tmp);
end
;
IdPOP31
.
Disconnect;
end
;