Delphi4开发WEBMAIL程序
点击次数:35 次 发布日期:2008-11-09 08:38:26 作者:源代码网
|
源代码网推荐 源代码网推荐 使用Delphi 4开发Web Server程序是非常简单的,Delphi 4中提供了大量的元件和对象,支持Web Server程序的开发。 下面通过一个例子来介绍如何利用DELPHI开发一个响应用户输入的ISAPI的WEBMAIL程序。只有在发送服务器上注册的用户才能通过在浏览器发送邮件。为了简单,程序没有对传送的数据提供保密。 源代码网推荐 源代码网推荐 首先,在WEB服务器端安装数据库引擎dbe,并设置好数据库别名:yh,指向一个包含用户名和用户密码的数据库文件user.db。接着建立两个HTML文件,名字分别为:dl.html,qd.html,放在WEB服务器的缺省目录下(如:C:INETPUBWWWROOT)。 源代码网推荐 源代码网推荐 dl.html的内容如下: 源代码网推荐 源代码网推荐 < html > 源代码网推荐 源代码网推荐 < head >< title > 发送邮件系统< /title >< /head > 源代码网推荐 源代码网推荐 < body > 源代码网推荐 源代码网推荐 < h1 >发送邮件系统< /h1 > 源代码网推荐 源代码网推荐 < p > 请输入您的用户名及密码。< /p > 源代码网推荐 源代码网推荐 < form method=”post” action="/scripts/xsmd" > 源代码网推荐 源代码网推荐 < p >用户名:< input type="text" length=10 源代码网推荐 源代码网推荐 name="username" > 源代码网推荐 源代码网推荐 密码:< input type="password" 源代码网推荐 源代码网推荐 length=10 name="password" >< /p > 源代码网推荐 源代码网推荐 < p >< input type="submit" value="确定" > 源代码网推荐 源代码网推荐 < input type="reset" value="清除" >< /p > 源代码网推荐 源代码网推荐 < /form > 源代码网推荐 源代码网推荐 < /body > 源代码网推荐 源代码网推荐 < /html > 源代码网推荐 源代码网推荐 qd.html文件内容如下: 源代码网推荐 源代码网推荐 < html >< head >< title >填表< /title >< /head > 源代码网推荐 源代码网推荐 < body > 源代码网推荐 源代码网推荐 < form method=”post” action="feedback" > 源代码网推荐 源代码网推荐 < p >请填入接收邮件地址:toaddress: 源代码网推荐 源代码网推荐 < input type=”text” length=20 源代码网推荐 源代码网推荐 name=”toaddress” >< /p > 源代码网推荐 源代码网推荐 < p >请填入主题。< input type="text" 源代码网推荐 源代码网推荐 length=20 name="subject" >< /p > 源代码网推荐 源代码网推荐 < p >内容:< /p > 源代码网推荐 源代码网推荐 < p >< input type=“textarea”length=40 源代码网推荐 源代码网推荐 width=40 name=”body” >< /p > 源代码网推荐 源代码网推荐 < p >< input type="submit" value="确定" > 源代码网推荐 源代码网推荐 < input type="reset" value="清除" >< /p > 源代码网推荐 源代码网推荐 < /form > 源代码网推荐 源代码网推荐 < /body > 源代码网推荐 源代码网推荐 < /html > 源代码网推荐 源代码网推荐 源代码网推荐 在DELPHI中新建一个基于ISAPI的WEB SERVER APPLICATION,手动增加nmsmtp1,query1,pageproducer1。 源代码网推荐 源代码网推荐 其中:pageproducer1的property: htmlfile:c:inetpubwww.rootqd.html。nmsmtp1的 property:host(发送邮件服务器的地址。)在这里为smtp.netease.com.。port:25。 全局变量为: sername:string;flag:boolean; 源代码网推荐 源代码网推荐 增加一个路径为/feedback的动作项,其代码如下: 源代码网推荐 源代码网推荐 procedure TWebModule1.WebModule1WebActionItem1 源代码网推荐 源代码网推荐 Action(Sender: TObject; 源代码网推荐 源代码网推荐 Request: TWebRequest; Response: 源代码网推荐 源代码网推荐 TWebResponse; var Handled: Boolean); 源代码网推荐 源代码网推荐 Var Count:integer; 源代码网推荐 源代码网推荐 S:string; 源代码网推荐 源代码网推荐 Begin 源代码网推荐 源代码网推荐 Query1.close; 源代码网推荐 源代码网推荐 Query1.sql.clear; 源代码网推荐 源代码网推荐 S:=’select count(username) from 源代码网推荐 源代码网推荐 user.db where username=”’; 源代码网推荐 源代码网推荐 S:=s request.contentfields.values[‘username’] ’”’; 源代码网推荐 源代码网推荐 S:=s ’ and password=”’; 源代码网推荐 源代码网推荐 S:=s request.contentfields.values[‘psword’] ’”’; 源代码网推荐 源代码网推荐 Query1.sql.add(S); 源代码网推荐 源代码网推荐 Query1.open; 源代码网推荐 源代码网推荐 If query1.count=0 源代码网推荐 源代码网推荐 then response.content:=’< html >< head >< title > 源代码网推荐 源代码网推荐 < /title >< body >用户名、密码不正确,请重新输入 源代码网推荐 源代码网推荐 < /body >< /html >’ 源代码网推荐 源代码网推荐 Else 源代码网推荐 源代码网推荐 Username:=request.contentfields.values[‘username’]; 源代码网推荐 源代码网推荐 Response.content:=pageproducer1.content; 源代码网推荐 源代码网推荐 End; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 再增加一个路径为/sendmail 的动作项, 源代码网推荐 源代码网推荐 它的程序代码如下: 源代码网推荐 源代码网推荐 procedure TWebModule1.WebModule1Web 源代码网推荐 源代码网推荐 ActionItem2Action(Sender: TObject; 源代码网推荐 源代码网推荐 Request: TWebRequest; Response: 源代码网推荐 源代码网推荐 TWebResponse; var Handled: Boolean); 源代码网推荐 源代码网推荐 Var body:string; 源代码网推荐 源代码网推荐 Begin 源代码网推荐 源代码网推荐 Flag:=true; 源代码网推荐 源代码网推荐 body:=request.contentfields.values[‘body’]; 源代码网推荐 源代码网推荐 Pageproducer1.htmldoc.clear; 源代码网推荐 源代码网推荐 Pageproducer1.htmldoc.add(‘< html >< body >’); 源代码网推荐 源代码网推荐 Nmsmtp1.postmessage.clear; 源代码网推荐 源代码网推荐 Nmsmtp1.postmessage.fromaddress:=username 源代码网推荐 源代码网推荐 ’@netease.com’; 源代码网推荐 源代码网推荐 Nmsmtp1.postmessage.from:=username; 源代码网推荐 源代码网推荐 Nmsmtp1.postmessage.body.add(body); 源代码网推荐 源代码网推荐 Nmsmtp1.postmessage.toaddress.add 源代码网推荐 源代码网推荐 (request.contentfields.values[‘toaddress’]); 源代码网推荐 源代码网推荐 Nmsmtp1.postmessage.subject:= 源代码网推荐 源代码网推荐 request.contentfields.values[‘subject’]; 源代码网推荐 源代码网推荐 Nmsmtp1.connect; 源代码网推荐 源代码网推荐 If flag=true then begin Nmsmtp1.sendmail; 源代码网推荐 源代码网推荐 nmsmtp1.disconntent;end 源代码网推荐 源代码网推荐 pageproducer1.htmldoc.add 源代码网推荐 源代码网推荐 (‘< /body >< /html >’); 源代码网推荐 源代码网推荐 response.content:=pageproducer1.content; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 end; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 增加nmsmtp1的事件如下: 源代码网推荐 源代码网推荐 procedure TWebModule1.NMSMTP1Connect(Sender: TObject); 源代码网推荐 源代码网推荐 begin 源代码网推荐 源代码网推荐 pageproducer1.htmldoc.add 源代码网推荐 源代码网推荐 ("< p >已经和发送邮件服务器连接< /p >"); 源代码网推荐 源代码网推荐 end; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 procedure TWebModule1.NMSMTP1Connection 源代码网推荐 源代码网推荐 Failed(Sender: TObject); 源代码网推荐 源代码网推荐 begin 源代码网推荐 源代码网推荐 flag:=false; 源代码网推荐 源代码网推荐 pageproducer1.htmldoc.add 源代码网推荐 源代码网推荐 ("< p >连接失败< /P >"); 源代码网推荐 源代码网推荐 end; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 procedure TWebModule1.NMSMTP1ConnectionRequired 源代码网推荐 源代码网推荐 (var Handled: Boolean); 源代码网推荐 源代码网推荐 begin 源代码网推荐 源代码网推荐 pageproducer1.htmldoc.add("< p >要求进行连接< /p >"); 源代码网推荐 源代码网推荐 end; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 procedure TWebModule1.NMSMTP1Failure(Sender: TObject); 源代码网推荐 源代码网推荐 begin 源代码网推荐 源代码网推荐 pageproducer1.htmldoc.add("< p >发送邮件失败< /p >"); 源代码网推荐 源代码网推荐 flag:=false; 源代码网推荐 源代码网推荐 end; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 procedure TWebModule1.NMSMTP1Header 源代码网推荐 源代码网推荐 Incomplete(var handled: Boolean; 源代码网推荐 源代码网推荐 hiType: Integer); 源代码网推荐 源代码网推荐 begin 源代码网推荐 源代码网推荐 pageproducer1.htmldoc.add("< p >head不完整< /p >"); 源代码网推荐 源代码网推荐 flag:=false; 源代码网推荐 源代码网推荐 end; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 procedure TWebModule1.NMSMTP1InvalidHost 源代码网推荐 源代码网推荐 (var Handled: Boolean); 源代码网推荐 源代码网推荐 begin 源代码网推荐 源代码网推荐 pageproducer1.htmldoc.add("< p > 源代码网推荐 源代码网推荐 发送邮件服务器地址无效< /p >"); 源代码网推荐 源代码网推荐 flag:=false; 源代码网推荐 源代码网推荐 end; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 procedure TWebModule1.NMSMTP1RecipientNot 源代码网推荐 源代码网推荐 Found(Recipient: String); 源代码网推荐 源代码网推荐 begin 源代码网推荐 源代码网推荐 pageproducer1.htmldoc.add 源代码网推荐 源代码网推荐 ("< p >接受邮件地址不正确< /p >"); 源代码网推荐 源代码网推荐 flag:=false; 源代码网推荐 源代码网推荐 end; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 procedure TWebModule1.NMSMTP1Success( 源代码网推荐 源代码网推荐 Sender: TObject); 源代码网推荐 源代码网推荐 begin 源代码网推荐 源代码网推荐 pageproducer1.htmldoc.add("< p > 源代码网推荐 源代码网推荐 成功发送邮件< /p >"); 源代码网推荐 源代码网推荐 end; 源代码网推荐 将project存为sendmail.dpr,编译后放到WEB服务器的可执行文件路径下(如:c:intpubscripts),即可响应HTML文件dl.htm的用户输入,并且如果用户的用户名及密码正确则可进入发送邮件的页面,用户填写接受邮件地址及主题、内容后即可发送邮件。此程序在NT SERVER上调试通过。 源代码网推荐 源代码网供稿. |
