delphi编写电子邮件的制作步骤.docx

上传人:b****2 文档编号:968253 上传时间:2023-04-30 格式:DOCX 页数:17 大小:20.10KB
下载 相关 举报
delphi编写电子邮件的制作步骤.docx_第1页
第1页 / 共17页
delphi编写电子邮件的制作步骤.docx_第2页
第2页 / 共17页
delphi编写电子邮件的制作步骤.docx_第3页
第3页 / 共17页
delphi编写电子邮件的制作步骤.docx_第4页
第4页 / 共17页
delphi编写电子邮件的制作步骤.docx_第5页
第5页 / 共17页
delphi编写电子邮件的制作步骤.docx_第6页
第6页 / 共17页
delphi编写电子邮件的制作步骤.docx_第7页
第7页 / 共17页
delphi编写电子邮件的制作步骤.docx_第8页
第8页 / 共17页
delphi编写电子邮件的制作步骤.docx_第9页
第9页 / 共17页
delphi编写电子邮件的制作步骤.docx_第10页
第10页 / 共17页
delphi编写电子邮件的制作步骤.docx_第11页
第11页 / 共17页
delphi编写电子邮件的制作步骤.docx_第12页
第12页 / 共17页
delphi编写电子邮件的制作步骤.docx_第13页
第13页 / 共17页
delphi编写电子邮件的制作步骤.docx_第14页
第14页 / 共17页
delphi编写电子邮件的制作步骤.docx_第15页
第15页 / 共17页
delphi编写电子邮件的制作步骤.docx_第16页
第16页 / 共17页
delphi编写电子邮件的制作步骤.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

delphi编写电子邮件的制作步骤.docx

《delphi编写电子邮件的制作步骤.docx》由会员分享,可在线阅读,更多相关《delphi编写电子邮件的制作步骤.docx(17页珍藏版)》请在冰点文库上搜索。

delphi编写电子邮件的制作步骤.docx

delphi编写电子邮件的制作步骤

delphi编写电子邮件的制作步骤

delphi编写电子邮件的制作步骤

.

分类:

delphi2007-09-2009:

43667人阅读评论(0)收藏举报

在delphi中TNMPop控件-------接收电子邮件,pop3

pop3协议自身命令

命令说明

USER向pop3服务器器传递用户名

PASS向pop3服务器器传递用户密码

STAT获取当前用户的邮件数

LIST获取邮件标号和大小

BETR获取邮件的全部信息,包括邮件头和邮件内容

TOP获取邮件头

DELE删除指定的邮件

NOOP空操作

QUIT退出主机对话

控件属性

1、AttachFilePath

指定附件存放路径,为空指当前路径

2、BytesRecvd

收了多少个字节

3、BytesTotal

本次传输总的字节数

4、Connected

与pop3服务器建立了连接则返回true,否则为false

例:

ifnotnmpop31.connectthen

begin

nmpop31.port:

=110;

nmpop31.userid:

=’username’;

nmpop31.password:

=’userpassword’;

nmpop31.connect;

end;

5、DeleteOnRead

如果属性为true时,则当邮件下载后从服务器删除掉

6、host

服务器主机名或ip地址

7、LocalIp

返回客户的IP地址,如果有多个,则只返回第一个。

8、mailcount

返回邮件数

9、mailmessage

调用了getmailmessage方法后,该属性返回检索到的邮件信息,它是一个类

包含了以下几部份:

lAttachments:

这是个tstringlist对象:

包含了接收到邮件的附件名称

lBody:

这是个tstringlist对象:

包含了接收到邮件的正文

lFrom:

发件人的e_mail地址

lHead:

这是个tstringlist对象,包含了邮件头的标题

lMessageID:

邮件的识别号

lSubject:

邮件的主题

10、password,port,userid

向pop3服务器提交的用户密码,协议端口,用户识别名

11、RemoteIP

pop3服务器的IP地址

12、ReportLevel

指示了与pop3服务器的通话状态信息?

13、Status

返回当前状态信息

14、Summary

是一个类,包含邮件的统计信息。

其中包含了以下几部份:

lBytes邮件的字节数;

lFrom发件人的邮件地址

lMessageID邮件的编号

lSubject这是邮件的主题

15、TimeOut

单位毫秒数,当Socket在这里所指定时间内没有响应,将会触发异常。

16、TransactionReply

返回上次命令执行结果。

******************************************************************

控件方法:

1、Abort

中止此次接收,且断开与Pop3服务器的连接。

2、Connect

与Pop3服务器的连接,但事先设好host,port,userid,password属性。

例:

Nmpop31.host:

=””;

Nmpop31.port:

=110;

Nmpop31.reportlevel:

=1;

Nmpop31.timeout:

=1000;

Nmpop31.connect;

3、DeleteMessage(MailNumber:

integer)

从Pop3服务器删除一个邮件号为Mai

lNumber的邮件。

注:

这里并没有真正删除,当在断开边接之前调用reset,将被恢复。

4、Disconnect

断开与Pop3服务器的连接。

5、GetMailMessage(MailNumber:

integer)

从Pop3服务器下载一个邮件号为MailNumber的邮件

6、GetSummary(MMailNumber:

integer)

得到一个邮件信息,其邮件号为MailNumber。

7、List

从邮件服务器检索一个列表。

该列表包含每一封邮件的编号和字节数,列表中的每一项将触发一个Onlist事件。

8、Reset

将恢复服务器中所有标记为已删除的邮件。

**************************************************************

控件事件:

1、OnAuthenticationFailed(Varhandled:

Boolean)

登陆服务器时,用户名与密码不能通过,将触发该事件。

更正了后,如果将Handled参数设为True,将再登陆一次。

2、OnAuthenticationNeeded(Varhandled:

Boolean)

如果某个操作需要验证用户的身份,将触发这个事件。

例:

procedureTform1.NMPOP31AuthenticationNeeded(Varhandled:

Boolean);

varnewpass,newid:

string;

begin

newpass:

=NMPOP31.password;

newid:

=NMPOP31.userid;

inputquery(‘AuthenticationNeed‘,’inputuserid’,newid);

inputquery(‘AuthenticationNeed‘,’inputpassword’,newpass);

NMPOP31.userid;:

=newid;

NMPOP31.password:

=newpass;

Handled:

=true;

end;

3、OnConnect

当与服务器连接成功时将显示触发该事件。

4、OnConnectFailed

当与服务器连接失败时将显示触发该事件

5、OnConnectRequired(Varhandled:

Boolean)

Pop控件大多数方法是在与服务器连接成功后才会有意思。

如果调用方法时与服务器连接不成功时,将触发该事件。

此时应重新调用connect方法,且将Handled参数设为True;

6、OnDisconnect

当与服务器断开连接时将触发该事件,如果要访问VCL控件,最好先判断它存不存在。

7、OnFailure

如果删除该邮件出错时,触发该事件。

8、OnInvalidHost

与主机连接时发现指定主机名不存在,触发该事件。

9、OnList

当程序调用list过程时,每检索到一项将会触发该事件一次。

MSG参数是邮

件编号,Size参数是邮件字节数。

10、OnPacketRecvd

每收到一个数据块时,将触发一次该事件。

可用BytesTotal和BytesRecvd属性显示邮件接收进度。

11、OnReset

当程序调用Reset过程恢复已经有删除标记的邮件时,触发该事件。

12、OnRetrieveStar

当程序调用GetMailMessage过程或GetSummary过程开始检索数据时将会触发该事件。

13、OnRetrieveEnd

当程序调用GetMailMessage过程或GetSummary过程检索数据成功时将会触发该事件

实例1:

程序如下:

procedureTfrmMail.FormCreate(Sender:

Tobject);

begin

//服务器信息

edtIP.text:

=’’

edt

Port.text:

=’110’;

//用户信息

edtUser.text:

=’mis’;

edtpass.passwordchar:

=’*’;

edtpass.text:

=’123’;

//其它

edtmail.text:

=’’;

edtsubject.text:

=’’;

memo1.lines.clear;

//pop3控件参数设置

NMPOP31.deleteonread:

=false;

NMPOP31.timeout:

=5000;

NMPOP31.deleteonread:

=false;

NMPOP31.Reportlevel:

=Status_Basic;

//显示其它选项

memo1.scrollbars:

=ssboth;

end;

首先要登陆服务器,在btnConnect的onclick事件中实现。

代码如下:

procedureTfrmMail.btnConnectclick(Sender:

Tobject);

begin

NMPOP31.host:

=edtip.text;

NMPOP31.port:

=strtoint(edtport.text);

NMPOP31.userid:

=edtuser.text;

NMPOP31.password:

=edtpass.text;

NMPOP31.connect;

end;

登陆成功处理:

procedureTfrmMail.NMPOP31Connect(Sender:

Tobject);

begin

showmessage(‘连接成功’);

end;

登陆成功失败处理:

procedureTfrmMail.NMPOP31Connect(Sender:

Tobject);

begin

showmessage(‘连接失败’);

end;

登陆成功就可获得邮件信息了。

按获得邮件按钮进行处理。

procedureTfrmMail.btnGetMailclick(Sender:

Tobject);

begin

NMPOP31.list;

end;

用了list方法,当检索到信息时将触发OnList事件。

这个事件的参数含有邮件大小等信息。

将这些信息添加到listView控件中显示出来。

procedureTfrmMail.NMPOP31list(MSG,size:

integer);

var

listitem1:

tlistitem;

begin

listitem1:

=listview1.items.add;

listitem1.caption:

=intostr(msg);

listitem1.subitems.add(intostr(size));

end;

在实际使用过程中,有可能用户在没有登陆服务器之前就使去获取邮件信息了

这时NMPOP3将触发OnConnectionRequired事件。

这时可在这里要求重新连

服务器。

procedureTfrmMail.NMPOP31ConnectionRequired(varhandled:

boolean);

begin

handled:

=true;

NMPOP31.connect;

end;

用户可在listview控件中选择要看的邮件。

procedureTfrmMail.Listview1Click(varhandled:

boolean);

varindex,I:

integer;

begin

iflistview1.selected:

=nilthen

exit;

//获取所选的标识

index:

=strtoint(listview1.selected.capton);

//获取邮件

NMPOP31.GetMessage(index);

//获取邮件信息

edtmail.text:

=nmpop31.mailmessage.from;

edtsubject.text:

=nmpop31.mailmessage.subject;

memo1.lines.assign(nmpop31.mailmessage.body);

end;

其它信息显示

procedureTfrmMail.NMPOP31Success(sender:

tobject);

begin

statusbar1.simpletext:

=’操作成功’;

end;

procedureTfrmMail.NMPOP31Failure(sender:

tobject);

begin

statusbar1.simpletext:

=’操作失败’;

end;

procedureTfrmMail.NMPOP31ConnectionFailed(sender:

tobject);

begin

showmessage(‘连接失败’);

end;

procedureTfrmMail.NMPOP31InvalidHoat(varhandled:

boolean);

begin

showmessage(‘无效的主机’);

handled:

=true;

end;

最后退出邮件服务器

procedureTfrmMail.btnDisConnectonClick(sender:

tobject);

begin

NMPOP31.disconnect;

end;

procedureTfrmM

ail.NMPOP31Disconnect(sender:

tobject);

begin

statusbar1.simpletext:

=’断开连接’;

end;

 

发送邮件NMSMTP

 

SMTP协议自身命令

命令说明

HELO客户机用HELO命令向服务器标识身份

MAIL初始化邮件传输

RCPT在MAIL命令后,标识单个邮件接收人

NOOP无操作,服务器响应OK

DATARCPT之后(通常),表示所有邮件接收人已标识,初始化数据传输

HELP客户机可使用此命令查询服务器支持什幺命令

QUIT会话结束

NMSMTP

属性

1、ClearParams属性

为真时,邮件发送完毕会把PostMessage属性的值清空

2、EncodeType

指定邮件编码方式。

uuMIME—MIME编码;unCode---UUEncoding编码

3、FinalHeader

指定最后的消息头标。

4、Host

SMTP服务器的主机名或IP地址。

5、LocalIP

返回客户机的IP地址,若有多个只返回一个。

6、Port

指定服务器的端口

7、PostMessage

是一个类,存储要发送的邮件信息。

具体如下:

lFromName:

发件人名称

lFromAdress:

发件人email地址。

lReplayToAdress:

回复地址

lOrgranization:

发件人所在地址。

lLocalProgram:

发件人所用的客户程序

lToAdress:

是Tstringlist对象,收件人的接收地址。

lToCC:

Tstringlist对象,抄送的email地址。

lToBCC:

Tstringlist对象,密送的email地址。

lAttachments:

Tstringlist对象,指定的附件。

lBody:

Tstringlist对象,邮件正文。

lSubject:

邮件主题。

lDate:

邮件发送日期,为空指当前日期。

9、ReplayNumber

只读属性,返回smtp服务器响应应答信息。

10、status

当前状态信息。

11、Timeout

毫秒级别的单位,如果规定时间Socket没有响应,触发异常。

12、TransactionReply

返回上一次命令的执行结果。

13、UserID

指定的用户名。

控件方法

1、Abort

中止发送,断开与smtp服务器的连接

2、ClearParameters

清空PostMessage。

3、Connect

登陆SMTP服务器,注意要先设好host,port属性。

Host非法触发OnValidHost事件,连接失败触发OnConnectFalied事件。

如果连接成功触发OnConnect事件。

4、DisConnect

断开与服务器的连接。

触发OnDisconnect事件。

5、ExpandList(MailList:

string):

Boolean;

该过程在SMTP服务器上检索一个邮件列表,如果有触发OnMailListReturn事件,可以取得这个邮件列表。

6、SendMail

发送邮件,事先要设好host,port,PostMessage

7、Verify(UserName:

string):

Boolean;

检验用户名是否合法,合法为True;

事件:

1、OnAttachmentNotFound

如果没找到postMessage所指定的邮件,该事件触发,同时有传进附件名的参数。

2、OnAuthenticationFailed

当SMTP需要用户名和口令才能发

送,而事先没给用户名和密码或给出的有错,该事件触发。

3、OnConnect

与服务器连接成功后,触发该事件。

4、OnConnectFailed

与服务器连接失败,触发该事件。

5、OnDisconnect

断开与服务器连接触发该事件。

6、OnEnacodeStart

当附件开始编码时,触发该事件

7、OnEnacodeEnd

当附件编码结束时,触发该事件。

参数FileName,初编码的附件。

8、OnFailure

当邮件发送不成功时,触发该事件

9、OnHeaderIncomplete

发送邮件时,当postmessage给出的头标信息不完整时,触发

10、OnHostResolved与OnIvalidHost

当服务器的主机名找到触发该事件,否则触发OnIvalidHost

11、OnMailListReturn

当程序调用ExpandList,每检索到一个email地址,就触发该事件一次。

12、OnRecipientNotFound

如果PostMessage所指定的收件人不成再时,触发该事件。

13、OnSendStart

邮件发送开始触发该事件。

14、OnSuccess

邮件发送成功触发该事件。

实例:

procedureTfrmSendMail.btnSendClick(Sender:

Tobject);

begin

ifedtAdress.text=’’then

exit;

ifedtport.text=’’then

exit;

ifedtSendusertext=’’then

exit;

ifedtReceiver.text=’’then

exit;

NMSMTP1.host:

=edtAdress.text;

NMSMTP1.port:

=strtoint(edPort.text);

NMSMTP1.UserId:

=edtSenduser.text;

NMSMTP1.conncet;

end;

procedureTfrmSendMail.NMSMTP1ConnectionFailed(Sender:

Tobject);

begin

showmessage(‘连接失败’);

end;

procedureTfrmSendMail.NMSMTP1Connection(Sender:

Tobject);

begin

sendmessage(Handle,WM_LOGIN,0,0);//自定义消息息传送。

产生WM_LOGIN事件

end;

procedureTfrmSendMail.WMLOGIN(varMSG:

TWM);//处理自定义消息

begin

//这里发送邮件。

NMSmTP1.postmessage.fromadress:

=edtuserMail.text;

NMSmTP1.postmessage.fromname:

=edtsenderuser.text;

NMSmTP1.postmessage.subject:

=edtsubject.text;

NMSmTP1.postmessage.toadress.add(edtreceiver.text);

NMSmTP1.postmessage.attachments.addstrings(listbox1.items);

NMSmTP1.postmessage.body.assign(memo1.lines);

NMSMTP1.SENDMAIL;

NMSMTP1.DISCONNCET;

end;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2