其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

如何用Delphi开发简单的WebMail程序


发布日期:2020年10月12日
 
如何用Delphi开发简单的WebMail程序
WebMail是指在网页中实现邮件的发送使用Delphi开发Web Server程序是非常简单的Delphi中提供了大量的元件和对象下面通过一个例子来介绍如何利用Delphi开发一个响应用户输入的ISAPI的WebMail程序为了简单程序没有对传送的数据提供保密

首先在Web服务器端安装数据库引擎dbe并设置好数据库别名yh指向一个包含用户名和用户密码的数据库文件userdb接着建立两个HTML文件名字分别为dlhtmlqdhtml放在Web服务器的缺省目录下(如c\inetpub\wwwroot)

dlhtml的内容如下

<html>

<head><title>发送邮件系统</title></head>

<body>

<h>发送邮件系统</h>

<p>请输入您的用户名及密码</p>

<form method=postaction=/scripts/SendMail>

<p>用户名<input type=text length= name=username>

密码< input type=password length= name=password ></p>

<p><input type=submit value=确定>

<input type=reset value=清除></p>

</form>

</body>

</html>

qdhtml文件内容如下

<html><head><title>填表</title></head>

<body>

<form method=postaction=feedback>

<p>请填入接收邮件地址:toaddress:

<input type=textlength= name=toaddress></p>

<p>请填入主题<input type=text length= name=subject></p>

<p>内容</p>

<p><input type=textarealength= width= name=body></p>

<p><input type=submit value=确定>

<input type=reset value=清除></p>

</form >

</body >

</html >

在Delphi中新建一个基于ISAPI的Web Server Application手动增加nmsmtpquerypageproducer其中pageproducer的htmlfile属性为c:\inetpub\wwwroot\qdhtmlnmsmtp的host(发送邮件服务器的地址)在这里为smtpneteasecomport:全局变量为sername:string;flag:boolean

增加一个路径为feedback的动作项其代码如下

Var

Count:integer;

S:string;

Begin

Queryclose;

Querysqlclear;

S:=select count(username) from userdbswheresusername=;

S:=s+requestcontentfieldsvalues[username]+;

S:=s+and password=;

S:=s+requestcontentfieldsvalues[psword]+;

Querysqladd(S);

Queryopen;

If querycount= then responsecontent:=

<html><head><title>

</title>

<body>用户名密码不正确请重新输入</body>

</html>

Else

Username:=requestcontentfieldsvalues[username];

Responsecontent:=pageproducercontent;

End;

再增加一个路径为Sendmail的动作项它的程序代码如下

Var body:string;

Begin

Flag:=true;

body:=requestcontentfieldsvalues[body];

Pageproducerhtmldocclear;

Pageproducerhtmldocadd(< html >< body >);

Nmsmtppostmessageclear;

Nmsmtppostmessagefromaddress:=username+@neteasecom;

Nmsmtppostmessagefrom:=username;

Nmsmtppostmessagebodyadd(body);

Nmsmtppostmessagetoaddressadd(requestcontentfieldsvalues[toaddress]);

Nmsmtppostmessagesubject:=requestcontentfieldsvalues[subject]

Nmsmtpconnect;

If flag=true then

begin

Nmsmtpsendmail;

nmsmtpdisconntent;

end

pageproducerhtmldocadd(</body></html>);

responsecontent:=pageproducercontent;

end;

增加nmsmtp的OnConnect事件添加如下代码

pageproducerhtmldocadd(<p>已经和发送邮件服务器连接</p>):

在NMSMTP的Connection事件添加如下代码

flag:=false;

pageproducerhtmldocadd(<p>连接失败</P>);

将project存为sendmaildpr编译后放到Web服务器的可执行文件路径下(如c:\intpub\scripts)即可响应HTML文件dlhtm的用户输入并且如果用户的用户名及密码正确则可进入发送邮件的页面用户填写接受邮件地址及主题内容后即可发送邮件此程序在NT Server上调试通过

               

上一篇:用Delphi打造图形界面的Ping程序

下一篇:Delphi面向对象的编程方法(七)