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

Delphi4.0 开发WEBMAIL程序

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

详解Swift 2.0(一):苹果做的25项改变 2015甲骨文数据库大会:回顾、感恩、展望,欲续写辉煌 Nokia进军VR领域:让人欢喜让人忧 2015中国人工智能大会在京成功召开 成为糟糕游戏设计师的五种打开方式 Stripe使用指南:Swift开发中的信用卡支付 将安全延伸至云端以及更远的地方 专访FreeWheel北京研发中心:一流技术型人才应具有国际化视野 iOS UIView动画实践(五):Keyframe Animation 【CTO讲堂】简说创业公司的技术选型,从BearyChat的开发说起 《近匠》Webix,跨浏览器的JavaScript UI组件库 微软正式推送Windows 10,你会升级最后一款Windows产品? Cinatra:高性能现代C++ Web框架 《移动App测试实战》作者邱鹏:我在测试过程中遇到的那些坑 Rust一周精彩回顾:《高级Rust编程语言》、新增13名贡献者 来自Sony Morpheus的开发灵感: 如何打造逼真的VR游戏? 如何像巫师那样隔空操作——聊聊迷你雷达的原理和应用 等你来战——IBM Cloudant数据库开发大赛火热开启! 《近匠》360加固保,应用安全攻防的核心实现 DEFCON黑客大会抢鲜看:你所不知道的黑客大对决 MDCC2015中国移动开发者大会启动 七场专题技术论坛公布 【CTO讲堂】如何构建高性能网络服务平台及生态系统? mysql备份数据库批处理 《近匠》Remix周哲,让Android运行在“电脑”上! TIOBE 2015年8月编程语言排行榜:Java第一,Objective-C跌出前五 Oculus PC SDK 0.7版即将发布,含新Direct Driver Mode 【CTO讲堂】NoSQL对未来大数据发展的意义何在? 从Java转向Go——AeroFS的一段奇妙之旅 谷歌重组建母公司Alphabet,新来的CEO Sandar Pichai是什么来头? 《近匠》专访AllSeen联盟主席薛国栋:从通讯层为物联网去中心化 Android性能优化典范(三) 谁能精确的告诉我需要哪几个文件就可以在不同的机器(系统不同)上执行编译好的vb6.0程序 勇敢的警察!?!! 各位大侠,小妹问一个关于Property Sheet的问题,怎么把下面的“应用,帮助,取消“设置成不显示 用installshield express制作安装程序,程序有关于SQL Server的连接,应怎样处理? 各位侠士,vc中怎样读取DBGrid Control中的数据?怎样执行sql 语句?就向delphi中一样?拜托!拜托! 版本控制问题[Fatal Error]Internal Error: L519 如何在Exhcnage server 服务器上安装反病毒软件 apache服务器如何同tomcat4.0 结合起来. 字符串中怎么显示“”,例如要显示字符串-----"“ID”是必选字段"。 求助Applet Servlet CreateOleObject('ADODB.Connection')怎么用? 哪位有AIX下的cc,xlC,make的中文使用说明?我的英语太差,看系统的帮助头都大了。 谁有SHA1算法源代码的,给我一份,我很急,一定给分!有网址的,也给分? ODBC SQL SERVER DRIVER timeout expired错误,不知如何解决 请问那位大侠知道哪有北大出版社出版的WINDOWS程序设计这本书的电子版下载 如何控制session的有效时间? VBA下怎样实现...... 很简单的问题,如果得到OS是什么啊? VB怎样调用Oracle没有包的存贮过程? 哪位能提供AIX下的cc,xlC,make的中文使用说明?我的英语太差,看系统的帮助头都大了! 那位有用网叶通过servlet提交数据的例子,越简单越好 救命啊! ----关于漂浮的工具条的隐藏(按钮失踪了!)。 主题:为何我的机子只能进入DOS平台,无法再进入Windows界面? 请问什么地方有《UNIX环境高级编程》的随书源代码下载,谢谢!! 如果得到OS的类型啊?用什么API函数啊? 请问哪有Linux的源代码下载??? 作者如何获得他自己编写的程序的版权及著作权? SOS!!请高手速指点, 立刻要用到,谢谢!! 报表字段过长如何分行打印? 急。。。关于字体属性 Jbuilder5.0 注册码,那个想要,我这儿有!今天刚搞到! 高手再哪里,网络程序!!!请赐教,高分!!! 如何在vc中静态调用dl中的函数? 循环里的变量为什么读不出? ADO的问题,请指教 用Delphi6导入VB做的ActiveX控件,为何不能生成VCL类?怎末办? 我给你出个谜语,你帮我解答个问题? 关于SQL SERVER的图片问题 读取二进制注册表的问题! 请问编写AWT的面向对象JAVA程序用哪个开发软件比较好? 关于手机铃声图片的下载 为何去不到记录值? 软件包 给点建议,做什么都打不起精神.学习也学习不进去,我看我要完蛋了都22了什么都不会 菜鸟问题:编译报错(WINDOWS.H already included),急! 数据绑定问题 关于组件ProgID的疑惑: RealPlayer的最新版本是什么? 哪里可以下载? 请教调试问题? 急!我的weblogic的控制台怎么不让进行create操作? 好郁悶啊﹐大家幫幫我﹗ 一根木料锯成4段要用24分钟,照这样计算,如果要将这根木料据成7段 要用多少分钟? 比80米少20%的是( )米,( )米的20%是60米 9、1、6、2,怎么才能=24? 把6米长的木料平均锯成3段要6分钟,照这样计算,如果锯成6段,需要多少分钟? 把6米长 比60米少20%的是多少米,多少米的20%是60米一个工厂由于采用了新工艺,原本没件产品成本是50元,现在每件产品的成本降低了15%,现在每件产品的成本是多少元 喜欢和爱是什么概念?有什么区别?各自的含义是什么? 甲、乙两袋糖果质量之比是3:2,如果从甲袋中拿出5千克放入乙袋,这是甲、乙两袋糖果比是1:1,一共多少? 比20米少20%的是()米,()米的20%是60米 爱和喜欢有什么区别 含义各是什么 2.05m³=( )dm ³ 640dm³=( )m³ 32dm³=( )cm³ 12000cm³=( )dm³ 26 一个援助的侧面积是125.6cm²,高是6dm,它的底面积是( )cm²,体积( )dm³一个圆柱的侧面积是125.6cm²,高是6dm,它的底面积是( )cm²,体积( )dm³ 不好意思 打错字了 为迎接国庆,我市某环保部门欲将一个长2×10³dm,宽4×10²dm,高8×10dm的长方为迎接国庆,我市某环保部门欲将一个长2×103dm,宽4×102dm,高8×10dm的长方个长方体废水池中的满池废水注入正方体 620dm³=( )m³ 尺子上标的INCH是什么意思? BOB的意思是什么? 美国文化概况,英文版,急. 尺子上的inch是什么? 判断下列说法是否正确?(1)胶体都带电(2)土壤保肥作用是因为土壤里许多物质如粘土、腐殖质等常以胶体形式存在(3)血液透析血清纸上电泳利用的是胶体的性质 美国文化介绍(英文版)要全面的美国文化介绍英文版的,急用 尺子的单位是什么 下列关于质量守恒定律的说法中,正确的是A.化学反应前后,反应物的分子总数一定等于生成物的分子总数B.化学反应的实质就是分子之间的重新组合C.参加化学反应的各物质的总质量一定等于 求英文版的芭比娃娃系列影片搜到的大多芭比系列的影片怎么都是中文配音的?个人喜欢原汁原味的影片,请问大家有没有原版的影片? 欧洲的文化传统对美国文化的孕育和发展有哪些影响? 有两袋米,第一袋重量的5分之一相当于第二袋重量的四分之一,写出第一袋米与第二袋米的重量的比,丙求出比值 美国文化介绍英语版 从风俗习惯,文化背景简述美国的感恩节 刚刚有个人和我说 我爱你+520XN AUTO CAD为什么直线画不出来,总是显示零长度直线用的是07版,指定一点,然后输入数值后,回车,命令栏里显示零长度直线.而且我的cad,空格键无法提交命令,只能用回车键. 应用题 1.将一根木料锯成1米长的小段,共用了7分钟,已知锯下一段要用1分钟.你知道这根木材有多长吗?要算式 我爱你,没有什么目的,只是爱你 希望你过得开心快乐!none 我想知道none在这里是什么意思!none 这个单词单独的意思我知道,是没有,无,不存在.那么放在这句话里是什么意思呢? CAD,以长度、角度为条件绘制直线,该怎样命令? 一根木料,锯6段需要16分钟,如果要锯11段,需要几分钟?一根木料,锯6段需要16分钟,如果要锯11段,需要几分钟?..................................快.................快.................. 写个空间说说,大概意思“以前是我错过拉,希望现在能给我次机会,我要对你说“我爱你” 大概 100字. AUTO CAD 2004画直线为什么不能输入长度?我之前用的是中望的07版的和11版的,输入L画直线,就显示可以输入长度角度之类的,可这个为什么没有呢? 应用题:一根长三米的布料每3/7据一段,每据一段距2分钟,锯完这根木料一共用多少分钟? 150cm平方=?平方米 美国的历史文化翻出美国的历史 一根10米长的木头,锯成2米的小段,锯下三小段用6分钟,锯完这根木头共用多少分钟?10/2=5,6/(3-1)=3分,5-1=4(次),3*4=12(分),这是天津宝坻给的标准答案,我觉得有问题.应该是6/3=2分,4*2=8分. 到底是“科学计数法”还是“科学记数法”?我需要令人信服的官方解释,不要用民间的定义,比如百度百科以及wiki AUTO CAD电子图是1比1的比例画的,怎样量出一些线条的长度并标出来? 2.5m³;= dm³; = cm³;ps 上面的全是立方,别看错了 什么科学记数法 介绍美国的一些历史或文化常识比如迷失的一代(the lost generation),教育券制度,巡回上诉法庭,婴儿潮(baby boom)等...不一定要根据我写的回答,最好是涉及范围比较广.比如内战,农奴等.不需 判断下列说法的正确1 化学变化的实质是旧化学键的断裂和新化学键的形成.2 反应物和生成物所具有的总能量决定了反应放热还是吸热.3 断裂化学键所吸收的能量小于形成化学键所放出的能 把5千克茶叶平均包成8包.每包茶叶多少千克?每千克可以包成多少包?用分数表示 AUTO CAD在不知道角度的情况下,如何画出指定长度的斜线?这个图,我原以为长度15是居中画的,就把两个交点连起来,但却发现斜线长度为66(如下图),不是65.所以我的这种画法肯定是有问题的.惭 化学:下列说法中正确的是A.电离时生成的阳离子有H+的化合物叫做酸B .电离时生成的阴离子有OH-的化合物叫做碱C.含有阳离子和阴离子的化合物都属于盐类D. 能够导电的溶液中阴离子总数和 甲桌上放5包茶叶,乙桌上放4包茶叶.共重440克.如果各取1包对换,两桌上的重量就相等.求茶叶和糖各重多少千克过程和解答 美国文化和历史的精华是什么? (化学判断)下列说法正确的是下列说法正确的是 ()A.1mol 氧B.SO^(2-)4的摩尔质量是96gC.3mol 小麦D.标准状况下,1mol O2和 N2 混合气体的体积约为22.4L错的理由...对的理由...解析...谢谢.. 爱和喜欢的定义是什么? 六年级数学甲乙糖果的质量之比试3:2 如果把甲袋糖果拿出5KG 放入乙袋时 甲乙的糖果的比试1:1 两袋糖果一共重多少千克?我的算式是,3-2=1 1除5=五分之一 5除五分之一 =25 一共有25千克 可 芭比娃娃是美国哪家玩具公司出品 喜欢和爱的含义相同吗? 甲乙两包糖质量比是3:2,如果从甲包拿出5kg,放入乙包,这时甲乙的比是1:1.两包一共重多少kg? 6-3/4 INCH 等于多少厘米请朋友们具体点.谢谢你们了. 1、1、6、9、怎么得24? inch/s是什么单位 1000um等于多少inch如题 1 1 6 9 求二十四
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn