摘要载入中…    请稍等…












内容载入中…    请稍等…

如长时间看不到内容,请关闭浏览器,重新打开此页!

芯友首页 应用软件 编程开发 网络硬件 资源下载 动漫音乐 精美图库 芯友论坛 视频教程 电脑技术QQ群:72845454
 ★★photoshop学友-史上最强播放器★★
 位置:编程开发>Deiphi>Deiphi网络编程
◎→ 本类最新
远程程序运行状态的简单监控
在IE上增添一个按钮
在Delphi中实现ASP编程
在Delphi程序中应用IE浏览器控件
在DELPHI程序中拨号上网
用Delphi编写ASP的ActiveX服务器
用Delphi编写CGI程序返回图象
◎→相关资源
C语言入门视频教程
C#编程WinForm入门视频
Asp.net入门视频教程下载
VC++编程视频教程下载
VB窗体文章
HTML入门教程
Deiphi实例教程
Deiphi窗体文章
Deiphi数据库编程
Deiphi网络编程
Deiphi图形图象文章
Deiphi系统文件
◎→ 热门资源
Delphi8 for Microsoft® .NE
DELPHI8操作符重载的例子
Delphi编程的图形显示技巧
Delphi编程善用资源文件
Delphi编程实现程序快捷方式
Delphi编程中的“流”
delphi编译错误信息

Delphi4开发WEBMAIL程序


日期:2008-10-20 22:05:49    来源:
   
 ·开发工具大比拼之Visual C++ VS Delphi ·在5分钟内就能制作出Web2.0风格的网页图标
 ·SMTP协议简介 (Simple Mail Transfer Protocol)
Delphi4开发WEBMAIL程序


    通常,实现WEBMAIL采用mailto.exe的CGI、在HTML文件中写入“< form action="mailto:电子邮箱地址" method=post >”语句或者调用WINDOWS API函数。采用WINDOWS API 和在HTML文件中写入“< form action="mailto:电子邮箱地址" method=post >”语句都要求用户的浏览器装入EXCHANGE、OUTLOOKEXPRESS、或OUTLOOK等软件,而且还有一些浏览器不支持MAILTO语句。而采用CGI的形式实现WEBMAIL对用户的浏览器没有要求,但效率不高。CGI技术正在逐渐被ISAPI/NSAPI技术所取代。本文就来讨论一下采用ISAPI技术实现WEBMAIL。

  使用Delphi 4开发Web Server程序是非常简单的,Delphi 4中提供了大量的元件和对象,支持Web Server程序的开发。 下面通过一个例子来介绍如何利用DELPHI开发一个响应用户输入的ISAPI的WEBMAIL程序。只有在发送服务器上注册的用户才能通过在浏览器发送邮件。为了简单,程序没有对传送的数据提供保密。

  首先,在WEB服务器端安装数据库引擎dbe,并设置好数据库别名:yh,指向一个包含用户名和用户密码的数据库文件user.db。接着建立两个HTML文件,名字分别为:dl.html,qd.html,放在WEB服务器的缺省目录下(如:C:\INETPUB\WWWROOT)。

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:\inetpub\www.root\qd.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:\intpub\scripts),即可响应HTML文件dl.htm的用户输入,并且如果用户的用户名及密码正确则可进入发送邮件的页面,用户填写接受邮件地址及主题、内容后即可发送邮件。此程序在NT SERVER上调试通过。

 [1]

Delphi、MS SQL Server开发环境下存储过程的使用

图像基础:5种Web图像格式简述

使用超链接和发送Email

--->Web2Pic Pro V1.2.2
--->A1 Website Downloa V1.07┊一款网站下载工具┊绿色特别版
--->Web Stream Recorder Pro V1.32
--->Web Dumper V2.3.3
--->Web迅雷 V1.8.3.127┊基于超多资源超线程技术的下载工具┊绿色下载站免安装版
Tags:  开发 WEB MAIL
{$enumber$}
芯友网版权所有 1999-2006 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 联系我们