说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi4开发WEBMAIL程序

HTML文档下载 WORD文档下载 PDF文档下载
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上调试通过。

创业者应避免对投资者说的五句话 直接拿来用!最火的iOS开源项目(二) 西部数据Pat Wilkison:云计算市场是创新热点 猎豹浏览器发布手机版:PM谈开发理念 成为伟大开发者的“九步曲” 使用GPU构建更便宜的Google神经网络 Facebook与Yahoo!的“火花”:系统间实时数据流管理工具 视金钱如粪土?Yahoo!又要买了,梅姐的算盘是这样打的 MySQL手册不再遵循GPL协议:MySQL走向闭源前兆? 扁平化设计会扼杀人们的创造力吗? 又一巨头涉足移动视频分享领域:传雅虎欲收购短视频应用Qwiki 史上最牛:主要靠三消游戏IPO King也许会是第一家 乐视超级电视预约启动 1小时预约近1.4万台 王坚:未来一年阿里云会有很大变化 梁胜:开源并不是做好软件的唯一方式 如何为IE 10编写特定的样式 MySQL手册许可证更改乃是Bug惹得祸 开源世界高峰论坛首批演讲议题公布 测试工程师的心灵鸡汤:谦虚、不沉默、有危机感、不断努力 高德地图API“沿图有你,晒出你的LBS应用”活动拉开帷幕! 谁能找出Windows 8.1的安全漏洞,就将获得微软10万美元奖金! 【直击美国云计算】Facebook分享数据中心新网络架构Fabric 【直击美国云计算】OCP发起产业界的Maker运动 红帽刘长春:开源是推动云计算和大数据发展的重要力量 【直击美国云计算】出货量达x86的20多倍 ARM或将成为数据中心主角 孙小群:将SAP HANA打造为开放的PaaS平台 GitHub推出重大改进:强调速度、内容和交互性 如何打造测试工程师精英团队? 如何做个有“钱”途的测试工程师? 苹果开始关注企业移动化 iOS 7的10大办公功能 “开源群英会2013” 参会名单(持续更新中) :哪位大侠有多媒体方面编程的经验?请帮忙查看一下,谢谢。 DELPHI有史以来最大的难题! 二级联动菜单怎么搞啊??各位大虾救急啊!!! 请赐教 如何建立mts與com,dcom,com+通信,其中每種方式有何不同之處? 有个有关j2ee应用服务器的问题,很困惑!(急,一定给分!) 学习c和c++学要学习汇编吗????? 我先试一 下 关于得到文件的名字? 用5行代码就让系统重起的帖子怎么找不着了?谁告诉我?加分了!! 素女经 如何修改SQL数据库表中的数据 在对话框里输出文字?不要控件!!不要static 控件 一个关于打印的怪问题! 如何将数据库通过JDBC接收并将字段关键字连成一棵树(每一分支最多64节点) 救急!!!!!!!小妹我遇到一点问题! 今年就业形势“大好”! ******* 马上就给分,所以给的少了点,大家别介意 ******** 大家给点意见 请关注一个初学者的问题?我学sql但是不知未来的发展趋势!? 图形数据窗口(line 星)点太大,如何缩小 救急!!!!小妹我遇到一点问题! 用bcb制作动态网页 数据窗口 Graph 类型 line 样式 如何学c语言? Delphi中如何获的其它应用程序中的内容? 显示颜色变成只有16色和2色? DWORD 参数传递的问题。 那里有播放AVI文件的程序?谢谢! 参数传递问题!!大侠帮帮我 请帮我修改一下源代码(delphi)请帮忙改一下,让它打印了不往里(数据库)存。 BIOS设置,用电脑是不是可以当闹钟呢? 五笔输入法忽然不能用了 救就我,为什么Frame的客户区变小了?关于切分窗口 怎样查找某一个目录下一个表是否存在? 请问有用过李阳疯狂英语的朋友吗?请说说到底怎么样? 我想向各位大侠请教一个问题? 如何屏蔽TEXTBOX的回车响应? 关于《各位学习编程的目的是什么》的总结 m_pusrrcdset->m_pDatabase->ExecuteSQL("")为什么不行?老是ASSERT错误 请问我刚入bcb的大门,有什么好的参考书可以看看吗? 有没有人知道计算机等级考试四级怎么查分啊? 如何将几个数组的信息写成一个.txt文本文件 笔试题请教? 请教一个小问题! 好难呀好难呀!!!!! 今天狠了狠心买了一本<>,花了我十分之一的工资!心疼啊!散点分! 请问有谁知道如何在C#中使用DirectX? 我在Picturebox中用Picture1.print打了200行数据,可我只能看到前20行 pb数据窗口中的列名在win2000 server里为什么显示不了中文? 填上合适的词语:( )态度 ( )作用 鼓舞( )填上合适的词语:( )态度 ( )作用 鼓舞( )请选择恰当模拟声音的词语填空:毕毕剥剥 扑踏扑踏 嗡嗡 呼呼 笃笃 叮咚叮咚 咯吱咯吱 根据字义组词全( ) 向远处看( )举:向上托( ) 望:意料( )推选( ) 探看( )看( ) 好办( )见:看法( ) 易:交换( )会面( ) 和气( ) 仓库运来一批粮食.其中小麦35吨,稻谷比小麦和黄豆的总数还多12吨.问:运来的黄豆比的稻谷少多少吨 已知集合A={α|2kπ≤α≤(2k+1)π,k∈Z},B={α|-4≤α≤4},则A∩B=非常疑惑的是 这里的α是表示弧度角度还是单纯的一个常数呢 好纠结 希望在解决题目的同时能帮我讲讲怎么判断一个数什么时候 根据字义组词语陷:1、掉进(),2、凹进(),3、陷害() 仓库运来一批粮食.其中小麦35吨,稻谷比小麦和黄豆的总数还多12吨.问:运来的黄豆比稻谷少多少吨 阅读“冬日雏菊自芬芳”第三自然段,请问小雏菊生长在一个怎样的环境中?作者为什么要特意写出这样的环境? 显露:( )(根据字义组词)根据字义组词,并用透组词, 周口哪有收购粮食的?例如小麦、大豆、玉米之类?除了粮食仓库之外能不能提供联系方式啊? "我是班长"最后一个自然段起到了什么作用? 根据字义组词:算算:弄清是非算:计划,筹划.要明确一点!用算组词! 在平面直角坐标系中,已知点(1-2a,a-2)在第三象限,且a为整数,求a的值.请写出具体过程, 搭石最后一自然段起什么作用 根据字义组词.稍稍喘息( )透穿过,通过( )到处都是( )漫随随便便( )断( )绝独一无二,没有可比的( ) 在平面直角坐标系中,点E(3k-9,1-k)在第三象限内,且点的坐标都为整数,求E点的坐标 写叶子的古诗词五首以上 雏菊什么篱笆 已知点A(m,n),在平面直角坐标系中的第三象限,其坐标m,n满足3m+2n=k-9,2m+n=k-7.(1)、求整数K的值;(2)、当K为整数时,分解因式(a+b)³-k(a+b)=? 写叶子的诗句描写叶子的不论今、古、中、外诗歌散文均可最好附有赏析要附有赏析 雏菊 篱笆.黄昏雏菊 篱笆.黄昏 村庄.阳光 大海.把下面句子填写完整使他们读起来充满诗情画意. 海洋对地球的天气有什么作用 求带“叶”字的诗句和写叶子的诗句有急用,今天必须回答上! (拟人句)雏菊____________________篱笆.黄昏( )村庄 海洋对环境的作用 在括号里填上合适的词语 ()的树叶风格 雏菊紧靠篱笆生长.(改写拟人句) 海洋在调节全球气候的作用,谈谈目前的研究概况 实际应用的可能性等等 以知集合A={α|2kπ 雏菊.篱笆 黄昏.村庄 阳光.大海填写完整 海洋如何调节全球气候越快越好 如何准确辨别雏菊、矢车菊和大波斯菊?各自的花语又是什么? 按字义组词张:1、铺排、陈列(组褒义词成语) 2、看望好:1、喜欢(组褒义词成语) 2、友爱各:1、逐个(组褒义词成语) 2、各个不同熟:1、成熟 2、习惯、常见、清楚要快,又快又好 在平面直角坐标系中,已知点p(1-3m,m-4)在第三象限,且m为整数,求m的值. 第九题,为什么当A等于空集时,k+1大于2k? 我会根据字义组词章:歌曲诗文的段落() 条理() 章程()挽:拉() 哀悼死者()会几个,填几个 已知m,n为整数,且满足2m^2+n^2+3m+n-1=0,求m,n的值 一.在下面的空白处填上适当的词语,使句子变成拟人句.1猫要是 ,能比谁都 .2秋天到了,高 空气对环境有什么作用 已知点P(2M-1,-3M-1)在第三象限内,若M为整数,求点P的坐标 雏菊什么意思 雏菊的英文咋写 裸子植物是我国各地城镇常见的树种,对于___环境,___空气和减轻___污染等具有重要作用快 雏菊的含义..请问?具体一点 . “稻谷成熟了”拟人句怎么写? 化学在未来的生活中会起到什么作用?比如在空气环境方面?食物方面? 我知道有两个意思,一个是 纯洁 ,另一个可就不那么纯洁了哦,是雏菊的意思.那么我想问雏菊是什么意思 雏菊的英文名称 根据字义组词:冷1,温度低()2,寂静,不热闹()3,暗中的,突然的() 雏菊 含义他发短信的暗号 韩国电影的英文介绍我们上课要用,越详细越好.(不仅仅是剧情)最好是有中文对照的, 在平面直角坐标系内,已知点(1-2a,a-2)在第三象限,且a为整数,求a的值. 雏菊的两层含义!雏菊第一层含义是:离别.第二层含义是什么? 雏菊的英语怎么拼? 净化环境和调节空气一样吗 仔细品味一下词语所表达的意思 (1)挺拔俊秀的椰子树,不时在海风中摇曳着碧玉般的树冠.(摇曳着)(2)海滩上玉屑银末般的细沙,金灿灿亮闪闪的,软软地暖暖地搔着人们的脚板,谁都想 雏菊英语怎么说 森林能净化空气,调节气候的现象是不是主要说明了环境对植物的影响/ 填上合适的词语( )的大厦,( )的香气,( )的椰树,( )的国槐,( )的油松( )的气质,( )的树冠 已知集合A={a|2kπ 封闭环境的操作空间,空气有哪些有害物质?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn