利用Delphi编程发送E-mailDelphi教程
|
| 论文作者:佚名 论文来源:不详 论文发布时间:2006-6-19 22:36:40 论文发布人:chjchjchj |
减小字体
增大字体
接发E-mail是许多“网虫”必修的功课,E-mail工具软件也很多,国外 的有Microsoft的OutlookExpress、TheBat等,国内则有FoxMail这样的精品。 其实,利用可视化编程工具Delphi4.0也能够制作出自己的E-mail软件。 Delphi4.0有关E-mail的组件有两个:NmPOP3和NmSTMP,它们都位于Internet 选项卡上,其中,NmPOP3组件封装并实现POP3协议,用来从InternetPOP3服务 器上读取电子邮件;NmSTMP封装并实现STMP协议,可用来向Internet的STMP服 务器发送电子邮件。限于篇幅,我们不能两者都介绍,这里只用NmSTMP编写一 个发送E-mail的程序,至于NmPOP3,以后有机会再谈,或者在看完本文后你有 兴趣,也可以借助于Delphi的帮助文档尝试用NmPOP3编程。 我们先来看一下程序运行界面。图1是程序主窗体,上面有一个字符串网格 (StringGrid)和三个按钮,它们的容器是仅有一个标签的PageControl。单击 “Clear”钮清除网格内容,单击“Send”钮发送E-mail,单击“NewMail” 钮弹出图2所示的对话框,此对话框用来设置STMP服务器名称、发件人地址、收 件人地址、发件人名称和邮件主题,其中前三项必须填写,“SelectFile”按 钮用来打开Open对话框,以便选取要发送的附件。 NmSTMP的属性和方法不多,关键的属性是Host(STMP服务器名称)和PostMessage (包含邮件信息),正确设置了Host属性和PostMessage属性后,就可以用Connect 方法(连接服务器)和SendMail方法发送E-mail了。 编写代码之前先要改变StringGrid1的一些缺省属性:ColCount属性为6, FixedCols属性为0,RowCount属性为2,另外,将PageControl1的Align属性置 为alClient。 以下是Unit1(主窗体)代码清单: unitUnit1; interface uses Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms, Dialogs,Grids,ComCtrls,StdCtrls,Psock,NMsmtp; type TForm1=class(TForm) PageControl1:TPageControl; TabSheet1:TTabSheet; StatusBar1:TStatusBar; StringGrid1:TStringGrid; Button1:TButton; Button2:TButton; Button3:TButton; NMSMTP1:TNMSMTP; procedureFormCreate(Sender:TObject); procedureButton1Click(Sender:TObject); procedureButton2Click(Sender:TObject); procedureButton3Click(Sender:TObject); procedureNMSMTP1Failure(Sender:TObject); procedureNMSMTP1SendStart(Sender:TObject); procedureNMSMTP1Success(Sender:TObject); private {Privatedeclarations} public {Publicdeclarations} end; var Form1:TForm1; implementation usesUnit2; {$R*.DFM} procedureTForm1.FormCreate(Sender:TObject); begin PageControl1.Pages[0].Caption:=‘SendMail’; self.Caption:=‘MyMailer’; self.BorderIcons:=[biSystemMenu,biMinimize]; self.BorderStyle:=bsSingle; Application.Icon:=self.Icon; Application.Title:=self.Caption; withStringGrid1do begin Cells[0,0]:=‘Host’; Cells[1,0]:=‘ToAddress’; Cells[2,0]:=‘FromAddress’; Cells[3,0]:=‘YourName’; Cells[4,0]:=‘Subject’; Cells[5,0]:=‘File’; end; Button2.Enabled:=False; Button3.Enabled:=False; end; procedureTForm1.Button1Click(Sender:TObject); begin Form2.Show; end; procedureTForm1.Button2Click(Sender:TObject); var i:Integer; begin fori:=1toStringGrid1.RowCount-2do withNmsmtp1do begin Host:=StringGrid1.Cells[0,i]; PostMessage.ToAddress.Add(StringGrid1.Cells[1,i]); PostMessage.FromAddress:=StringGrid1.Cells[2,i]; PostMessage.FromName:=StringGrid1.Cells[3,i]; PostMessage.Subject:=StringGrid1.Cells[4,i]; PostMessage.Attachments.Add(StringGrid1.Cells[5,i]); Connect; Sendmail; DisConnect; end; Button2.Enabled:=False; Button3.Click; end; procedureTForm1.Button3Click(Sender:TObject); var i:Integer; begin withStringGrid1do begin fori:=1toRowCount-2do begin Cells[0,i]:=‘’; Cells[1,i]:=‘’; Cells[2,i]:=‘’; Cells[3,i]:=‘’; Cells[4,i]:=‘’; Cells[5,i]:=‘’; end; RowCount:=2; end; Button2.Enabled:=False; Button3.Enabled:=False; end; procedureTForm1.NMSMTP1Failure(Sender:TObject); begin StatusBar1.SimpleText:=‘Mailsendfailure!’; end; procedureTForm1.NMSMTP1SendStart(Sender:TObject); begin StatusBar1.SimpleText:=‘NowSending...’; end; procedureTForm1.NMSMTP1Success(Sender:TObject); begin StatusBar1.SimpleText:=‘SendSuccess!’; end; end. Button1是“NewMail”按钮,Button2是“Send”按钮,Button3是“Clear”按钮。 以下是Unit2代码清单: unitUnit2; interface uses Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms, Dialogs,StdCtrls; type TForm2=class(TForm) OpenDialog1:TOpenDialog; GroupBox1:TGroupBox; GroupBox2:TGroupBox; Edit1:TEdit; Edit2:TEdit; Edit3:TEdit; Edit4:TEdit; Edit5:TEdit; Button1:TButton; Button2:TButton; Button3:TButton; Label1:TLabel; Label2:TLabel; Label3:TLabel; Label4:TLabel; Label5:TLabel; Label6:TLabel; procedureButton1Click(Sender:TObject); procedureButton2Click(Sender:TObject); procedureButton3Click(Sender:TObject); procedureFormActivate(Sender:TObject); procedureFormCreate(Sender:TObject); private {Privatedeclarations} public {Publicdeclarations} end; var Form2:TForm2; implementation usesUnit1; {$R*.DFM} procedureTForm2.FormCreate(Sender:TObject); begin self.Caption:=‘NewMail’; self.BorderStyle:=bsDialog; end; procedureTForm2.FormActivate(Sender:TObject); begin Edit1.Text:=‘’; Edit2.Text:=‘’; Edit3.Text:=‘’; Edit4.Text:=‘’; Edit5.Text:=‘’; Label1.Caption:=‘NoFile’; end; procedureTForm2.Button1Click(Sender:TObject); begin ifOpenDialog1.Executethen Label1.Caption:=Opendialog1.Filename; end; procedureTForm2.Button2Click(Sender:TObject); var i:Integer; begin if(Edit1.Text<>‘’)and(Edit2.Text<>‘’)and(Edit5.Text<>‘’) and(Label1.Caption<>‘NoFile’)then begin withForm1.StringGrid1do begin RowCount:=RowCount+1; i:=RowCount-2; Cells[0,i]:=Edit1.Text; Cells[1,i]:=Edit2.Text; Cells[2,i]:=Edit5.Text; Cells[3,i]:=Edit3.Text; Cells[4,i]:=Edit4.Text; Cells[5,i]:=Label1.Caption; end; Form1.Button2.Enabled:=True; Form1.Button3.Enabled:=True; end; self.Hide; end; procedureTForm2.Button3Click(Sender:TObject); begin self.Hide; end; end. Edit1、Edit2、Edit3、Edit4、Edit5编辑框分别用于填写服务器名称、收件 人地址、发件人名称、邮件主题和发件人地址。 现在一个E-mail发送程序就完成了。你可以试一试,自已给自已发几封邮件, 用FoxMail之类的软件是否能收到信。顺便说一句,本文就是用这个自编程序发到 编辑部的。
|
|
|
|
|
|
|
| ∷相关技术评论 |
(评论内容只代表网友观点,与本站立场无关!) [查看发表评论...] | |
|
|
| |
站内广告 |
| |
|
站内搜索 |
| |
栏目导航 |
| |
|
|
本月热门 |
| |
|
|
本日热门 |
| |
|
|
|