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

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上调试通过。

为什么开发者热衷在Stack Overflow上查阅API文档? Facebook推新News Feed 欲造就“个性化报纸” 女神程序员的一天:暴力测试social爬虫代码 2013IBM云存储路线图:更快,更简单,更安全 二战大数据故事:数学家、物理学家、概率论击败德国潜艇 软件定义网络服务商Pertino B轮融资2000万 Scringo社交组件,让你的应用“热闹”起来! Android开发必备:Eclipse 4.2 SR2版本发布 32场!2013年360HTML5校园行首站告捷 移动周报:不做内容,只钻技术的快播 一周消息树:中国开源发展缓慢的“病因” 百度应用引擎BAE正式开放 新增支持Node.js CloudVelocity,下一个VMware? Buffer创始人谈开发:先验证,后编程! 谷歌可穿戴式产品再度来袭:会说话的鞋子 未来Chrome OS或取得Android般成功 云落地@北京,北京市北斗公共平台或开放API? GitHub再遭攻击 主要服务中断约一小时 移动开发者将有望拥有.app域名使用权 微信将推“游戏中心”?移动互联网入口圈地加剧 美国航空公司首次开放API 并举办“黑客马拉松”编程大赛 谷歌数据中心设计的10条“黄金法则” GitHub时代:为什么我们都在开源 VMware发布Horizon Suite 三款应用打包折扣低 TOP30+应用排行榜:二月份国内外综合榜单 开源是否意味着不需要负任何责任? 微软年度科技展 酷炫技术知多少 图解Hadoop生态系统 HTML5并不给力 微软IE10又默认启用Flash Oracle出新提案:Java正逼近iOS? TIOBE 2013年3月编程语言排行榜:厚积薄发 Ruby反超Perl 请问我把两路PCM的样值点相加除2得到混音信号,可是噪音很大,应该怎么消除呢(有代码) 大家快看电视新闻,中国一艘潜艇在海上出事了!紧急发布! 各位快请帮帮忙呀!Session问题!!! 如何在代码中添加新增lookup字段??? xp系统问题!高分等答案 pl/sql中函数与过程有什么区别 关于事务 LIB 在线等!!!!!!!! ADO+SQL Server 如何用VB编写发邮件的程序? 数据库搜索的一个怪问题 怎么得到从另一个页面传来的参数 Full Text: Bush Speech Aboard the USS Abraham Lincoln 请问 怎么实现变量互换阿 我是新手~~~ FAT错误,请问如何修复? flashget那个小方框怎么做? 谁有《UML与Rational Rose2002从入门到精通》书的选配光盘 急!!!随机函数 FAT错误,请高手帮忙修复。 内部消息(我对我说的负责) 不定时开放FTP服务器 急,求救!!! 一个很简单的问题. 为什么 “基本图象处理代码(1) ehom(原作)”对grayscale不对? linux下的oicq 有马? 帮帮我,好吗,感谢,非常 help,help,sql query question? 大家认为考研考进其他学校(且跨专业)的可能性有多大 显示图片 数据库搜索的一个怪问题 共享上网问题!急~!!!! 句柄和指针有什么区别吗? 大虾快进来,帮帮兄弟们!!!再现等待!高分!! 请问C++Builder的程序中能不能使用*.mdb类型的数据库? 帮帮忙!!个位大哥 请问用java编程能实现数据采集的程序并进行传输(即c/s模式)吗? 请问什么命令找开一个窗体的? 请问:如何从文件中获取icon并得到HBITMAP句柄? 如何在客户端打开一个word文件 MVP是个什么概念???? linux启动不了,Bringup loopback interface时出错,请问是什么原因? 帮帮忙!! 我海军一艘潜艇失事 70名官兵不幸全部遇难!! 明天朋友结婚,征集整人的法子 是谁删除了我贴?? 而且没有跟我说一声!!! 白天工作,晚上溜狗,爽呀!比大暑天喝了冰镇雪碧还爽! 我的jsp服务器是iis+TOMCAT+win2000pro 不知怎的每次用不了多久就显示出 网页无法显示 目前访问该 Web 站点的用户过多,我只是自已用怎么 终于有星了,高兴,散分(第一次散分,请斑竹手下留情) 我的刚装的2000进入启动界面时,进度条读到2/3时就蓝屏了! 请问在运行时向ActiveX控件中添加ActiveX控件的方法是什么? 高手请进:如何在WinNT以上系统进行BIOS读取! 银行4.8的利息是什么意思 这一个单词译中 亚买爹什么意思 英语翻译 英语翻译mumble 作无齿地咀嚼之意时,应译成怎样的拟声词?比如:咕噜咕噜等等 Two teaspoons should_____enough. 雪是什么形状 图 英语翻译the score was nothing like Strainsky's earlier pieces,Rather,Rite introduced a complex and unpredictable new style,rather在这句话中是什么意思, M100甲醇汽油低温能使用吗 “明后天的样子,“我明后天的样子来找你,”这句话里,“明后天的样子,”是确定的指明天和后天吗? 翻译一个单词엔돌핀 是什么意思? 梦到和猴子吃东西梦到我和猴子吃一个东西 鹿的外貌是什么 英语翻译Alexandros 猴子先生还在哦吗 疲惫的近义词和反义词 人在走路时,对地面的压强会产生变化吗?为什么? 猴子吃辣椒—( ) 完美的反义词和近义词 人站在地面上,2只脚对地面压强为a帕,那一只脚对地面压强为几帕?为什么?2只脚都站时,一只脚对地面压强为几帕?为什么? 猴子吃辣椒——抓耳挠腮的意思它的意思~就是为什么这么说- - 《核舟记 》桃核上雕了多少人和事?雕刻者是怎样巧妙的安置这些人物的?本文虽名为“记”,是不是记叙文?和桃花源记是同一文体吗?为什么? 某人从双脚站立变成单脚站力,他对水平地面的压强_____,压力_____ 孙猴子吃仙桃—( )范进中举—( )烂网打鱼—( )猴子吃辣椒-()帽子烂了边-( ) 将8mlNO2和O2的混合气体通入倒立于水槽装满水的量筒中,充分反应后,剩余气体为1ml.求原混合气体中NO2和O2的体积比.用差量法解此题! 假如真空包装机理想化,即不存在漏气漏污垢之类,它真能将包装袋里的...假如真空包装机理想化,即不存在漏气漏污垢之类,它真能将包装袋里的空气抽干净以致于没有一个气体分子吗?我意思 排球有几种颜色? 我现在在银行存5年定期100000元,5年后我能得到多少利息,怎么算 一根质量为M的木杆被细绳吊起,一直质量为m的毛跳起抓住木杆向上爬,结果细绳断了,木杆下落,但猫仍不停对猫,离地面高度不变,则处于平衡,重力与摩擦力二力平衡 mg=f对杆,受到向下的重力, 问:排球技术有几种?分别是什么? 蒙语里 qi qi mo mo ge hai yi 一质量m的猫跳上质量为M一端用细线悬挂的竹竿后,细线断了,为保持竹竿不下落,猫应向哪个方向加速爬?多少呢? 悠悠球洗轴用汽油怎样洗轴? 各位翻译高手能不能帮我翻译几个词?International headquarters and Defence Organizations ActVisiting force Actprescribe processremediation notice 如上图所示,在竖直悬挂的直杆上爬着一只猫,杆与猫的质量分别为M、m.当把悬线剪断时,猫顺着杆急速上爬,保持对地高度不变,则杆下落的加速度为 悠悠球用汽油洗轴洗完轴晒干后 加润滑油吗 e injury never Mo Budiao 甲醇汽油低温能用吗?比如零下几度还能用 A :Do you happen to know what's on after the news B:--------------------------------A :Do you happen to know what's on after the news B:--------------------------------------------a there is no important news after that.b it's a documentary about ani 英语翻译什么是:“plug into the system from more than 8000 prots.” 关于对待困难的成语和名言成语四个名言两个 厚的四字成语 能不能把所有颜色单词给我翻译过来谢谢了 描写困难的成语有哪些 我梦到牵着一只猴子,还拿鞭子打它 英语翻译1、工程中心 2、总经理办公室 3、制图中心 4、客服中心 5、会议室6、五行工艺 英语翻译如下:贵州省贵阳市富水中路天业大厦B栋8楼"贵州华祥矿产有限责任公司" 梦见猴子:梦到老公被猴子咬到,而我在拿着鞭子追打猴子 He does that every Sunday.(用next Sunday改写) He( ) ( ) ( ) ( )that( ) Sunday. 英语翻译这些次分别是:终生成就奖(就是颁奖典礼用词啊),最佳新人奖,医院院长,我们要做一个diolauge,很紧急, 英语翻译“我将负责和你的部门联系” 连词成句:gave,him,a,I,two,age,book,days(.) l( )12.you( )11.your brother( )13.填空 “有句话说” 用英语怎样翻译比较好 That you gave him such a book to read meant _______ .A.being wasted his time B.to be wasted his time C.wasting his time D.to waste his time 翻译包括选项并分析. 人站立时一只脚和两只脚对地面的压强一样吗? You should pour two cups of yogurt into the blender.(改为祈使句)() () cups of yogurt into the blender. 两年期存款利率是4.40%,表示什么意思 呀咩嗲是什么意思 To know her is to like her.翻译下 澳洲85岁志愿者因慈善工作获得“默多美国一男子为取啤酒冒险重返失火房屋险澳媒称中国买家推动悉尼当地房价升高2美国一醉酒男子被捕后拿总统奥巴马为自统计显示韩国火葬率为74% 比20年李某某等5人强奸上诉案将于10月31学习时报刊文:大城市尾号限行后公车数印度反对派竞选集会遭袭 死亡人数上升今秋首次暴风强势登陆法国 数万户家庭日本赛马失控与轿车相撞当场丧生 司机美媒:部分美联储官员主张制定债券“退埃及再发军警遇袭事件 三名警察执勤时前三季度宁波灰霾天数达81天 复合污津巴布韦一架波音737客机引擎着火后外交部:联合国人权理事会通过中国接受日本新一代消防车设计图出炉 神似机动韩国军方网络司令部涉嫌干预大选 防长调查显示日本半数国民反对《特定秘密保澳洲85岁志愿者因慈善工作获得“默多埃及再发军警遇袭事件 三名警察执勤时日本赛马失控与轿车相撞当场丧生 司机沪指涨2.41%创年内新高为村支书“摆平”矛盾? 近20人夜闯“五看”如何选择留学中介“八一”建军节军人可免费乘水上巴士夏日“丝路”游补水防晒是关键中纪委曝光高官落马前细节29次信访为何没能阻止矛盾激化?扎堆“北上广” 不如就近选一选中信银行薪金煲扩军 华夏、南方基金正全省主要城市天气浙女篮教练被提前解约多次沟通未果依法LVMH中国市场需求降温二季度销售增给梅花鹿羊驼喂食,你想去吗?5名地方厅级领导干部被立案侦查兰石重型装备回归IPO审核通道肝病患者饮食多注意兰州公路段明起开始整修国道109线网友批J罗爱妻太难看 J罗:我喜欢就刘家峡提门排沙应对特大沙峰曝汪涵将当爹外出旅游 备好三类外伤药
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘