⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 021.htm

📁 Delphi书籍--Delphi网上教程
💻 HTM
字号:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI专题--网络应用-->Delphi4.0 开发WEBMAIL程序</TITLE>
<META NAME="keywords" CONTENT=" DELPHI专题--网络应用 Delphi4.0 开发WEBMAIL程序">
<META NAME="description" CONTENT=" - DELPHI专题--网络应用 - Delphi4.0 开发WEBMAIL程序">

<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋体"}
.tt2 {font: 12pt/15pt "宋体"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<a href="index4.html">返回</a>

<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>

<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷体_GB2312">Delphi4.0 开发WEBMAIL程序</FONT></B></center> 
<hr color="#EE9B73" size="1" width="94%"> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 通常,实现WEBMAIL采用mailto.exe的CGI、在HTML文件中写入“&lt; 
form action=&quot;mailto:电子邮箱地址&quot; method=post &gt;”语句或者调用WINDOWS 
API函数。采用WINDOWS API 和在HTML文件中写入“&lt; form action=&quot;mailto:电子邮箱地址&quot; 
method=post &gt;”语句都要求用户的浏览器装入EXCHANGE、OUTLOOKEXPRESS、或OUTLOOK等软件,而且还有一些浏览器不支持MAILTO语句。而采用CGI的形式实现WEBMAIL对用户的浏览器没有要求,但效率不高。CGI技术正在逐渐被ISAPI/NSAPI技术所取代。本文就来讨论一下采用ISAPI技术实现WEBMAIL。 
</span></p> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 使用Delphi 4开发Web 
Server程序是非常简单的,Delphi 4中提供了大量的元件和对象,支持Web 
Server程序的开发。 下面通过一个例子来介绍如何利用DELPHI开发一个响应用户输入的ISAPI的WEBMAIL程序。只有在发送服务器上注册的用户才能通过在浏览器发送邮件。为了简单,程序没有对传送的数据提供保密。 
</span></p> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 首先,在WEB服务器端安装数据库引擎dbe,并设置好数据库别名:yh,指向一个包含用户名和用户密码的数据库文件user.db。接着建立两个HTML文件,名字分别为:dl.html,qd.html,放在WEB服务器的缺省目录下(如:C:\INETPUB\WWWROOT)。 
</span></p> 
<BR> 
<pre><span style="font-size: 9pt">dl.html的内容如下:
&lt; html &gt;
&lt; head &gt;&lt; title &gt;  发送邮件系统&lt; /title &gt;&lt; /head &gt;
&lt; body &gt;
&lt; h1 &gt;发送邮件系统&lt; /h1 &gt;
&lt; p &gt; 请输入您的用户名及密码。&lt; /p &gt;
&lt; form method=”post” action=&quot;/scripts/xsmd&quot; &gt;
&lt; p &gt;用户名:&lt; input type=&quot;text&quot; length=10
name=&quot;username&quot; &gt;
密码:&lt; input type=&quot;password&quot;
length=10  name=&quot;password&quot; &gt;&lt; /p &gt;
&lt; p &gt;&lt; input type=&quot;submit&quot; value=&quot;确定&quot;  &gt;
&lt; input type=&quot;reset&quot; value=&quot;清除&quot; &gt;&lt; /p &gt;
&lt; /form &gt;
&lt; /body &gt;
&lt; /html &gt;
qd.html文件内容如下:
&lt; html &gt;&lt; head &gt;&lt; title &gt;填表&lt; /title &gt;&lt; /head &gt;
&lt; body &gt;
&lt; form method=”post” action=&quot;feedback&quot; &gt;
&lt; p &gt;请填入接收邮件地址:toaddress:
&lt; input type=”text” length=20
name=”toaddress” &gt;&lt; /p &gt;
&lt; p &gt;请填入主题。&lt; input type=&quot;text&quot;
length=20 name=&quot;subject&quot; &gt;&lt; /p &gt;
&lt; p &gt;内容:&lt; /p &gt;
&lt; p &gt;&lt; input type=“textarea”length=40
width=40 name=”body” &gt;&lt; /p &gt;
&lt; p &gt;&lt; input type=&quot;submit&quot; value=&quot;确定&quot; &gt;
&lt; input type=&quot;reset&quot; value=&quot;清除&quot; &gt;&lt; /p &gt;
&lt; /form &gt;
&lt; /body &gt;
&lt; /html &gt;</span></pre> 
<p><font color="#ffffff"><span style="font-size: 9pt"> </span></p>
<p><span style="font-size: 9pt">----</font> 在DELPHI中新建一个基于ISAPI的WEB 
SERVER APPLICATION,手动增加nmsmtp1,query1,pageproducer1。 </span></p> 
<p><span style="font-size: 9pt"><font color="#ffffff">----</font> 其中:pageproducer1的property: 
htmlfile:c:\inetpub\www.root\qd.html。nmsmtp1的 property:host(发送邮件服务器的地址。)在这里为smtp.netease.com.。port:25。 
全局变量为: sername:string;flag:boolean; </span></p> 
<BR> 
<pre><span style="font-size: 9pt">增加一个路径为/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:=’&lt; html &gt;&lt; head &gt;&lt; title &gt;
&lt; /title &gt;&lt; body &gt;用户名、密码不正确,请重新输入
&lt; /body &gt;&lt; /html &gt;’
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(‘&lt; html &gt;&lt; body &gt;’);
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
(‘&lt; /body &gt;&lt; /html &gt;’);
response.content:=pageproducer1.content;


end;


增加nmsmtp1的事件如下:
procedure TWebModule1.NMSMTP1Connect(Sender: TObject);
begin
pageproducer1.htmldoc.add
('&lt; p &gt;已经和发送邮件服务器连接&lt; /p &gt;');
end;


procedure TWebModule1.NMSMTP1Connection
Failed(Sender: TObject);
begin
flag:=false;
pageproducer1.htmldoc.add
('&lt; p &gt;连接失败&lt; /P &gt;');
end;


procedure TWebModule1.NMSMTP1ConnectionRequired
(var Handled: Boolean);
begin
pageproducer1.htmldoc.add('&lt; p &gt;要求进行连接&lt; /p &gt;');
end;




procedure TWebModule1.NMSMTP1Failure(Sender: TObject);
begin
pageproducer1.htmldoc.add('&lt; p &gt;发送邮件失败&lt; /p &gt;');
flag:=false;
end;


procedure TWebModule1.NMSMTP1Header
Incomplete(var handled: Boolean;
hiType: Integer);
begin
pageproducer1.htmldoc.add('&lt; p &gt;head不完整&lt; /p &gt;');
flag:=false;
end;




procedure TWebModule1.NMSMTP1InvalidHost
(var Handled: Boolean);
begin
pageproducer1.htmldoc.add('&lt; p &gt;
发送邮件服务器地址无效&lt; /p &gt;');
flag:=false;
end;




procedure TWebModule1.NMSMTP1RecipientNot
Found(Recipient: String);
begin
pageproducer1.htmldoc.add
('&lt; p &gt;接受邮件地址不正确&lt; /p &gt;');
flag:=false;
end;




procedure TWebModule1.NMSMTP1Success(
Sender: TObject);
begin
pageproducer1.htmldoc.add('&lt; p &gt;
成功发送邮件&lt; /p &gt;');
end;</span></pre> 
<p><font color="#ffffff"><span style="font-size: 9pt"> </span></p>
<p><span style="font-size: 9pt">----</font> 将project存为sendmail.dpr,编译后放到WEB服务器的可执行文件路径下(如:c:\intpub\scripts),即可响应HTML文件dl.htm的用户输入,并且如果用户的用户名及密码正确则可进入发送邮件的页面,用户填写接受邮件地址及主题、内容后即可发送邮件。此程序在NT 
SERVER上调试通过。 </span></p> 
<hr color="#EE9B73" size="1" width="94%"> 
 
</TD> 
 
</TR> 
</table> 
</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -