delphi编写电子邮件的制作步骤文档格式.docx
《delphi编写电子邮件的制作步骤文档格式.docx》由会员分享,可在线阅读,更多相关《delphi编写电子邮件的制作步骤文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
服务器主机名或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:
Nmpop31.reportlevel:
=1;
Nmpop31.timeout:
=1000;
Nmpop31.connect;
3、DeleteMessage(MailNumber:
integer)
从Pop3服务器删除一个邮件号为Mai
lNumber的邮件。
注:
这里并没有真正删除,当在断开边接之前调用reset,将被恢复。
4、Disconnect
断开与Pop3服务器的连接。
5、GetMailMessage(MailNumber:
从Pop3服务器下载一个邮件号为MailNumber的邮件
6、GetSummary(MMailNumber:
得到一个邮件信息,其邮件号为MailNumber。
7、List
从邮件服务器检索一个列表。
该列表包含每一封邮件的编号和字节数,列表中的每一项将触发一个Onlist事件。
8、Reset
将恢复服务器中所有标记为已删除的邮件。
**************************************************************
控件事件:
1、OnAuthenticationFailed(Varhandled:
Boolean)
登陆服务器时,用户名与密码不能通过,将触发该事件。
更正了后,如果将Handled参数设为True,将再登陆一次。
2、OnAuthenticationNeeded(Varhandled:
如果某个操作需要验证用户的身份,将触发这个事件。
procedureTform1.NMPOP31AuthenticationNeeded(Varhandled:
Boolean);
varnewpass,newid:
string;
newpass:
=NMPOP31.password;
newid:
=NMPOP31.userid;
inputquery(‘AuthenticationNeed‘,’inputuserid’,newid);
inputquery(‘AuthenticationNeed‘,’inputpassword’,newpass);
NMPOP31.userid;
:
=newid;
NMPOP31.password:
=newpass;
Handled:
=true;
3、OnConnect
当与服务器连接成功时将显示触发该事件。
4、OnConnectFailed
当与服务器连接失败时将显示触发该事件
5、OnConnectRequired(Varhandled:
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);
//服务器信息
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.Reportlevel:
=Status_Basic;
//显示其它选项
memo1.scrollbars:
=ssboth;
首先要登陆服务器,在btnConnect的onclick事件中实现。
代码如下:
procedureTfrmMail.btnConnectclick(Sender:
NMPOP31.host:
=edtip.text;
NMPOP31.port:
=strtoint(edtport.text);
NMPOP31.userid:
=edtuser.text;
=edtpass.text;
NMPOP31.connect;
登陆成功处理:
procedureTfrmMail.NMPOP31Connect(Sender:
showmessage(‘连接成功’);
登陆成功失败处理:
showmessage(‘连接失败’);
登陆成功就可获得邮件信息了。
按获得邮件按钮进行处理。
procedureTfrmMail.btnGetMailclick(Sender:
NMPOP31.list;
用了list方法,当检索到信息时将触发OnList事件。
这个事件的参数含有邮件大小等信息。
将这些信息添加到listView控件中显示出来。
procedureTfrmMail.NMPOP31list(MSG,size:
integer);
var
listitem1:
tlistitem;
=listview1.items.add;
listitem1.caption:
=intostr(msg);
listitem1.subitems.add(intostr(size));
在实际使用过程中,有可能用户在没有登陆服务器之前就使去获取邮件信息了
这时NMPOP3将触发OnConnectionRequired事件。
这时可在这里要求重新连
服务器。
procedureTfrmMail.NMPOP31ConnectionRequired(varhandled:
boolean);
handled:
用户可在listview控件中选择要看的邮件。
procedureTfrmMail.Listview1Click(varhandled:
varindex,I:
integer;
iflistview1.selected:
=nilthen
exit;
//获取所选的标识
index:
=strtoint(listview1.selected.capton);
//获取邮件
NMPOP31.GetMessage(index);
//获取邮件信息
=nmpop31.mailmessage.from;
=nmpop31.mailmessage.subject;
memo1.lines.assign(nmpop31.mailmessage.body);
其它信息显示
procedureTfrmMail.NMPOP31Success(sender:
tobject);
statusbar1.simpletext:
=’操作成功’;
procedureTfrmMail.NMPOP31Failure(sender:
=’操作失败’;
procedureTfrmMail.NMPOP31ConnectionFailed(sender:
procedureTfrmMail.NMPOP31InvalidHoat(varhandled:
showmessage(‘无效的主机’);
最后退出邮件服务器
procedureTfrmMail.btnDisConnectonClick(sender:
NMPOP31.disconnect;
procedureTfrmM
ail.NMPOP31Disconnect(sender:
=’断开连接’;
发送邮件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地址。
Tstringlist对象,指定的附件。
Tstringlist对象,邮件正文。
邮件主题。
lDate:
邮件发送日期,为空指当前日期。
9、ReplayNumber
只读属性,返回smtp服务器响应应答信息。
10、status
当前状态信息。
11、Timeout
毫秒级别的单位,如果规定时间Socket没有响应,触发异常。
12、TransactionReply
返回上一次命令的执行结果。
13、UserID
指定的用户名。
控件方法
中止发送,断开与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:
检验用户名是否合法,合法为True;
事件:
1、OnAttachmentNotFound
如果没找到postMessage所指定的邮件,该事件触发,同时有传进附件名的参数。
2、OnAuthenticationFailed
当SMTP需要用户名和口令才能发
送,而事先没给用户名和密码或给出的有错,该事件触发。
3、OnConnect
与服务器连接成功后,触发该事件。
与服务器连接失败,触发该事件。
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:
ifedtAdress.text=’’then
ifedtport.text=’’then
ifedtSendusertext=’’then
ifedtReceiver.text=’’then
NMSMTP1.host:
=edtAdress.text;
NMSMTP1.port:
=strtoint(edPort.text);
NMSMTP1.UserId:
=edtSenduser.text;
NMSMTP1.conncet;
procedureTfrmSendMail.NMSMTP1ConnectionFailed(Sender:
procedureTfrmSendMail.NMSMTP1Connection(Sender:
sendmessage(Handle,WM_LOGIN,0,0);
//自定义消息息传送。
产生WM_LOGIN事件
procedureTfrmSendMail.WMLOGIN(varMSG:
TWM);
//处理自定义消息
//这里发送邮件。
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;