📄 h20000324-23.htm
字号:
<html><head><script language="JavaScript"> function reset(){ for ( var i=0; i < document.Form1.elements.length; i++ ) { document.Form1.elements[i].options[0].selected=true }}function going(url){ parent.location=url; reset();}</script><style><!--A:link {text-decoration: none; color: #000000; font-family: 宋体}A:visited {text-decoration: none; color: #000000; font-family: 宋体}A:active {text-decoration: none; font-family: 宋体}A:hover {text-decoration: underline:#ffffff; color: #ff0000}body,table {font-size: 9pt; font-family: 宋体}.H1 {font-size: 9pt ; line-height:9pt; align=center}.ourfont {font-size: 9pt ; line-height:9pt; }.ourfont1 {font-size: 9pt ; line-height:9pt; }--></style><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>如何运用Delphi编写自己的电子邮件软件</title></head><body topmargin="0" leftmargin="0"><div align="center"><center><table border="0" cellPadding="0" cellSpacing="0" width="700"><tbody> <tr> <td><p class="content4"><span class="font"><img border="0" height="3" src="../../soft/pix.gif" width="700"></span></td> </tr></tbody></table></center></div><div align="center"><center><table border="0" cellPadding="0" cellSpacing="0" width="700"><tbody> <tr> <td bgColor="#3399ff" width="658"><p class="ourfont"><span class="font"> </span><a style="text-decoration: none; color: rgb(255,255,255)" href="../os/H00705-2.htm">操作系统</a><font color="#FFFFFF"><span class="font"><span> |</span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../image/H00705-14.htm">图像处理</a><font color="#FFFFFF"><span>|<span class="font"> </span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../autoCAD/H00705-19.htm">辅助设计</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="../data/H00705-18.htm">数 据 库</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="H00706-1.htm">高级编程</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="../netuse/H00705-20.htm">网络应用</a><font color="#FFFFFF"><span><span class="font"> | </span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../webpage/H00705-21.htm">网页制作</a><font color="#FFFFFF"><span><span class="font"> |</span></span></font> <a style="color: rgb(255,255,255); text-decoration: none" href="../technic/H00706-3.htm">技术交流 </a><a style="color: rgb(255,255,255); text-decoration: none" href="http://202.100.13.77/clslyb/default.asp?clsid=jiaoc"><font color="#FFFFFF"><strong>过客留言</strong></font></a></td> <td bgColor="#3399ff" width="32"><p align="center" class="ourfont"><a href="mailto:net@163.sn.cn"><img src="../../soft/email.gif" alt="email.gif (493 字节)" border="0" WIDTH="20" HEIGHT="19"></a></td> </tr></tbody></table></center></div><div align="center"><center><table border="1" cellSpacing="1" width="700" bordercolor="#3399FF"><tbody> <tr> <td align="left" bgColor="#FFFFFF" vAlign="top" width="700" bordercolor="#0000FF" bordercolorlight="#0000FF" bordercolordark="#0000FF"><p class="ourfont"> </p> <p align="center"><strong><span class="font"> </span></strong></p> <p align="center"><strong><span class="font">如何运用Delphi编写自己的电子邮件软件</span></strong></p> <p><span class="font">如果你每天上网,那么你肯定每天要使用电子邮件软件,有没有想过写一个属于自己的电子邮件软件,用自己写的软件来收信和发信,那种感觉肯定很好。<br> 众所周知,Delphi这个windows开发平台中的贵族可以开发各个方面的应用程序,当然基于internet的程序用它开发也是得心应手。<br> 从Delphi3开始,它自己的控件中就有了基于interent开发的控件,不过这些控件不是Delphi本身的vcl控件,而是ActiveX控件,这样多多少少对于应用程序的发布不是很方便。好在借助于Delphi强大的控件技术,我们可以从internet上找到很多免费的vcl控件来帮助我们写电子邮件软件,比较有名的是ics控件组和sakemai控件组。Ics是一个全面的internet程序解决方案,而sakemail是专门用来开发电子邮件软件的控件。本文就是要介绍如何使用sakemail控件来写支持POP3和SMTP协议的收信和发信程序。<br> <br> 一、下载和安装<br> sakemail在很多著名的Delphi站点都可以下载sakemail控件,比如www.torry.ru。在Delphi中安装sakemail是很简单的,先将下载的zip文件释放在你指定的目录中,在Delphi中选择打开文件,设定文件类型为dpk,然后选择目录下的emaildak.dpk文件,选择compile,然后install就行了。安装完后,会在控件的internet页中添加4个相应的控件。<br> <br> 二、收信程序<br> 让我们先来看看利用POP3协议收信的范例程序是如何来写的。<br> 从这个设计时的画面(如图1)看到,收信主要利用sakemail的sakmsglist和sakpop控件。让我们来看看关键的按钮“Connect and retrieve msgs”后面的代码。<br> procedure TForm1.CntClick(Sender: TObject);<br> begin<br> //指定服务器<br> SakPOP1.Host := EditHost.text;<br> //指定用户名称<br> SakPOP1.UserId := EditUserId.text;<br> //指定用户密码<br> SakPOP1.Passwd := EditPasswd.text;<br> <br> StatusBar1.Panels[0].text := 'Wait a moment, please...';<br> SakPOP1.connect;//连接服务器<br> if SakPOP1.POPError then //连接服务器失败<br> begin<br> MessageDlg( 'Connect failed. Maybe the server is down or not responding.',<br> mtError, [mbOk], 0);<br> exit;<br> end;<br> if not SakPOP1.login then //登陆服务器失败<br> begin<br> ShowMessage('Unauthorized access...');<br> exit;<br> end;<br> //显示共有多少电子邮件<br> showMessage( 'You have ' + intToStr( SakPOP1.Init) + ' new msg(s) of ' +intToStr( SakPOP1.MsgsCount));<br> BtnCancel.Enabled := true;<br> //接受电子邮件<br> sakPOP1.retrieveAllMessages( SakMsgList1);<br> BtnCancel.Enabled := false;<br> SakPOP1.quit; //退出POP3连接<br> if SakMsgList1.count > 0 then<br> begin<br> currentMsg := 0;<br> showCurrentMsg; //显示当前的电子邮件内容<br> end;<br> StatusBar1.Panels[0].text := 'Done. ' + intToStr( SakMsgList1.count) + ' msgs retrieved.';<br> end;<br> 在上面的程序中,我们已经加入了比较详细的注释。利用sakemail的控件来收取信件基本上有以下几个步骤:<br> 1.服务器连接的准备工作。你需要制定服务器的域名、用户名和密码。用以下语句实现:<br> SakPOP1.Host:=EditHost.text;<br> SakPOP1.UserId:=EditUserId.text;<br> SakPOP1.Passwd:=EditPasswd.text;<br> 2.服务器连接。在这个阶段如果一切正常,你只需要等待几秒,但是如果服务器地址错,或者用户名和密码错误,则会退出,需要重新连接。用以下语句实现:SakPOP1.connect3.获得邮件的数量。这是通过语句SakPOP1.MsgsCount来获得的。<br> 3.从服务器将邮件传送到本地。<br> 显示一封电子邮件由以下的过程完成:<br> //显示当前的邮件<br> procedure TForm1.showCurrentMsg;<br> var msg: TSakMsg;<br> i: integer;<br> begin<br> msg := SakMsgList1.items[ currentMsg];<br> labelMsgId.Caption := msg.MessageId;<br> labelInReplyTo.Caption := msg.InReplyTo;<br> labelFrom.caption := msg.From;<br> labelTo.caption := msg.SendTo;<br> labelSubject.caption := msg.Subject;<br> labelDate.caption := msg.Date;<br> labelReplyTo.Caption := msg.ReplyTo;<br> memo1.text := msg.Text.Text; {msg.Text is a StringList}<br> if msg.AttachedFiles.Count > 0 then<br> begin<br> comboBoxAttach.items.clear;<br> for i := 0 to msg.AttachedFiles.Count-1 do<br> comboBoxAttach.items.add( msg.AttachedFiles[ i].fileName);<br> comboBoxAttach.enabled := true;<br> comboBoxAttach.itemIndex := 0;<br> buttonSave.enabled := true;<br> end<br> else<br> begin<br> comboBoxAttach.enabled := false;<br> buttonSave.enabled := false;<br> end;<br> end;<br> 从上面的过程我们可以看到显示一个电子邮件的内容的程序并不复杂,正文内容直接交给memo来显示,如果有附件的话,读出附件的数量,然后将其文件名写入combo box中。收信程序的框架就大致如此了(如图2)。下面我们来看看发信程序。<br> <br> 三、发信程序<br> 单纯的发信程序很简单,我们来看看“send”按钮背后的代码:<br> //发信<br> procedure TForm1.ButtonSendClick(Sender: TObject);<br> begin<br> screen.cursor := crHourGlass;<br> StatusBar1.Panels[0].Text := 'Wait a moment, please';<br> SakSMTP1.host := EditHost.text; //指定地址<br> SakMsg1.UserName := EditUserName.text;<br> //以下指定发送人有关信息<br> SakMsg1.From := EditFrom.text;<br> SakMsg1.SendTo := EditTo.text;<br> SakMsg1.Subject := EditSubject.text;<br> SakMsg1.Text.Assign( Memo1.Lines);//信件正文<br> SakSMTP1.connect;//连接服务器<br> if not SakSMTP1.SMTPError then<br> begin<br> BtnCancel.Enabled := true;<br> SakSMTP1.SendMessage( SakMsg1);<br> BtnCancel.Enabled := false;<br> SakSMTP1.quit;<br> StatusBar1.Panels[0].Text := SakSMTP1.ReplyString;<br> end;<br> screen.cursor := crDefault;<br> end;<br> 发信有以下几个步骤:<br> 1.指定发送邮件相关的信息,比如服务器地址、发信人等。<br> 2.服务器连接。<br> 3.如果连接正常,发送电子邮件。<br> 利用SakeMail我们可以看到发信的步骤是比较简单的。同时sakemail的发信控件提供了很多的控件,比如发信前、发信后、解码过程中等,可以让你很好的控制发信的整个过程。同样收信控件也具有相应的这些事件。<br> <br> 四、电子邮件程序需要注意的其它问题。<br> 我们从以上的分析可以看出利用sakemail这个优秀的电子邮件引擎,我们也可以写出具有自己特色的电子邮件软件或者让自己的应用程序轻易地具有电子邮件功能。不过如果你像要写一个真的可以用的电子邮件软件,至少还应该具有以下的设计和功能:<br> 1.对于电子邮件的储存和查找功能。不能保存邮件的电子邮件软件是没有实际使用价值的,同样在这个信息爆炸的时代,你的程序必须具有良好的查询功能,让使用者快速地找到需要的信息。<br> 2.多帐户功能。越来越多的免费电子邮件使得支持多帐户功能成为我们选择电子邮件软件的一个基本特性。多帐户功能增加了程序设计的复杂性。<br> 3.完备的邮件过滤功能。随着越来越多的信息通过电子邮件的形式发送过来,如果不能建立起一套完备的过滤功能,那么有些重要的邮件一旦被疏忽,影响可能很大。所以你的电子邮件程序应该具有一点人工智能,能自动过滤、自动挑选甚至自动恢复指定的电子邮件。<br> 4.文件格式的支持。Html格式的电子邮件可以具有更好的表现形式,因此你应该支持Html格式的电子邮件。另外,因为很多的电子邮件附件是zip格式,如果你的电子邮件程序内部直接支持察看zip格式以及释放操作,就更加锦上添花了。<br> 以上简要概括地谈了一些作者自己开发Email程序的看法和经验,希望对于有兴趣于开发电子邮件程序的朋友有所帮助。</span></td> </tr></tbody></table></center></div><hr align="center" SIZE="1" width="700"><p align="center" class="ourfont"><span><span><font color="#000000"> <a style="color: rgb(0,0,0); text-decoration: none" href="../../soft/network/index.htm">互联网络</font><font color="#FFFFFF"> </font></a><font color="#000000">|</span></span><a href="../../soft/system/index.htm" style="color: rgb(0,0,0); text-decoration: none">系统工具</a><span>|<span> <a href="../../soft/tools/index.htm" style="color: rgb(0,0,0); text-decoration: none">实用工具</a> | <a href="../../soft/multimedia/index.htm" style="color: rgb(0,0,0); text-decoration: none">媒体工具</a> | <a href="../../soft/image/index.htm" style="color: rgb(0,0,0); text-decoration: none">图形图像</a> | <a href="../../soft/game/index.htm" style="color: rgb(0,0,0); text-decoration: none">游戏娱乐</a> | </span><a href="../../soft/usesoft/index.htm" style="color: rgb(0,0,0); text-decoration: none">软件<span>使用</a></font><font color="#FFFFFF"> |</font> </span></span></p><hr align="center" SIZE="1" width="700"><font color="#FFE8BB"><p align="center" class="ourfont"></font><font color="#000000"><span><span>© Copyright 2000 </span></span>陕西公用计算机互联网信息中心<span><span> 版权所有 </font></p></span></span><p align="center" class="ourfont"><font color="#000000"><span><span>本站制作维护by <a style="color: rgb(0,0,0)" href="mailto:haiyuan@163.sn.cn">HAIYUAN</a></span></span></font></p><p align="center" class="ourfont"><font color="#000000"><span><span>电话:(029)8371051 8371055 8371049 联系信箱:<a href="mailto:net@163.sn.cn">net@163.sn.cn</a></span></span></font></p></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -