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

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

雅虎5000万美元收购视频分享应用Qwiki 创业第一年易犯的8大错误 苹果推iOS游戏手柄,掌上游戏主机格局变天? 代码审查固然伟大,那还有其他替代品吗? 怎样维护一个成功的开源项目 麻省理工专家发布新系统Ascend,专注内存访问安全缺陷 Oracle Database 12c面临的最大挑战是开源+开放的生态系统?! 浸入式数据中心:高密度计算的新前沿 2013年腾讯合作伙伴大会要点回顾 “鼠标之父”和超文本研究先驱Douglas Engelbart去世 享年88岁 Web服务器排行:Nginx超越Apache 成为全球TOP 1000网站最常用的Web Server Windows 8之父Steven Sinofsky正式离职微软 不得接受竞争者聘用 Yelp处理1.02亿/月绝对造访人次及3900万评论的省钱秘诀 可视化:图像的主题色提取算法,是不是太高端了? 不利于写出好代码的15个职场因素 GPU Saturday技术沙龙:分享异构计算新技术及应用 微软隐藏最深的秘密武器之一——Visual Studio可作为Python IDE 历时六月,Qt 5.1正式版终于面世! HTML5全硬件加速游戏引擎:Sphinx正式公测 专访“Monster Blade”创始人:无需营销,百万下载背后的秘密 Twitter实时分析平台主要合作伙伴Dataminr:让用户不再错过重要的推文 OpenStack、OpenNebula、Eucalyptus、CloudStack社区活跃度比较 XOR的黄色大象:Erasure Code为Hadoop节省数据恢复带宽 竞争将越来越激烈:戴尔或也进军可穿戴计算市场 新技术:可直接在人脑播放广告 编程调试和诊断的五大规则 70%开发者:对现有应用推广和广告并不满意 四种方案:将OpenStack私有云部署到Hadoop MapReduce环境中 扩展PHP的五个简单技巧,让单服务器并行支撑30000用户 硅谷为什么无法复制 PubNub+Cloudinary:简单几步快速搭建实时图片分享应用 HttpSessionBindingEvent据说要在web.xml中配置 批量修复rm文件的问题 数字游戏(一般结了婚的是基本做不出来的) 分页时为什么最后一个总是重复!比如5个记录,2个一页,那么第三页第5个记录出现两次! 自来水控制解决方案?! 请教用ASP开发物业收费软件的开行性! 那些软件是用VC写的? 急!!! 滤去所选记录集中相同数据的那个SQL语句是什么??? 是一个单词! 请教用PHP开发物业收费软件的开行性! 谁有C++经典书籍电子版 VC技术内幕的电子版pdg文件格式要用何种工具才能浏览??? 请教各位:一个运行notes c++ api 的超级菜问题: 推荐一下制作GIF的免费软件. 关于双系统!!! 如何将数据库中保存的word文件读出并在IE中大开? 关于acmStreamOpen的问题? 关于editmask的问题 TURBOC 3.0的问题,在线等待..... 各位高手!我又一问题请教!请帮忙!!! IIS如何与Tomcat结合,请指教! 如何用java访问Excel文件? 如何添加空记录 非常着急!!请高手赐教!我刚注册,只有200分奉送!!谢谢!!! 哪儿可以提供ExpressNavBar vcl下? 各位高手快来指点一下,是关于动态创建组件的! 自己定义CMP的finder定位器的问题 四舍五入问题 请教牛人,能不能发一段java中有关计时的程序 一个小问题,请大侠指点,立即给分!!! 关于三角函数的问题 一个三百年前已忘得一干二净的问题 打包!!!问题问题。。。在线..... 一个c的问题!! [100分求救]在Canvas或Applet上画的图应该怎样输出为jpg图象呢? 用VC的console application 到底能编多大的程序? 关于程序在初始化时候注册窗口类的问题? 上网很慢 请问从log文件里都能得到哪些信息? 系统设计一般把数据表放一个数据库中还是分到多个数据库中? 树型控件的问题,PB8.03版本,大家遇到过吗? 强烈支持雍亲王倒分!!(江湖无赖) 怎样调用VC写的DLL 同步 兄弟们,我的rh8中怎么没有中文输入法? 在access中如何用函数?我怎么找不到函数库啊。那里有关于access的函数库教程? 请教 我装的DELPHI7.0不知为何在区域设置为“英文”是看到的汉字都成了“????”? <iframe>如何改变大小? 关于水晶报表的问题!(急!!!!)(在线等待~~~~~~~~) 关于vb脚本中运用三角函数的问题 一个三百年前已忘得一干二净的问题 cbc+数据库的问题????????? 能不能控制<input type='fele' ...>的文件类型,如不可输入(readonly全部都不能用了) A:Where that coat is this?B:Is it a black one A:Yes,it is.B:___.A:Here you are.A.I think it's mineB.I think it's his为什么是【B】啊?注意:老师搪塞过去了…… 第一句A的问话,我打错了,应该是A:Whose that coat is this? This brown coat is 220 yuan 对线部分提问 220 yuan是划线部分 回答 How much is this brown coat 为什么 谁知道氧化乐果的成份? 为什么电热不一定等于电功.请看我的推理如何错了?电流通过导体时产生的热量Q=IIRT,然而电流所做的功电功W=UIT,这两个式子适合于所有电路,那么Q应该永远等于W(因为我认为IIRT永远=UIT),那么 “姬”代表贵族还有和它一样形容高贵的字吗求求各位大侠 谁知道氧化乐果 的毒性 到底有多大?我想给自己室内种的植物喷点~对人的影响有多大?还有,狗狗不懂事,万一舔了喷过的植物,我知道氧化乐果有毒,就是不知道毒性到底有多大?、谁了解的,别 已知2+根号6的整数部分和小数部分分别是a,b,试表示a,b的值 谁知道文字当中有多少个字是代表高贵的意思的?我想起一个店名. 翻译、我今天要去吃饭 3+根号2的整数部分用a表示,小数部分用b表示3-根号2的整数部分用c表示,小数部分用d表示求(a-c)除(b+d 谁有关于高贵的作文?500字左右 昊字是武则天创的吗?我听说昊字是武则天创的? "师傅领进门,修行在个人"的英文翻译 2010高一化学需要记的内容有什么? 第一题第二题的1小题 师傅领进门,修行在自身英语怎么说 士字下面一个口 怎么拼 是第二题的第一小题和第二小题 师傅领进门,修行在个人英语怎么说 That coat is ( ).A:100 dollar B:100 dollars C:100$ D:100 yuanswe have bags () all colors.A:in B:at C:on D:fortwenty-eight and twelve ()A:are fourty B:is forty C:isfourty D:are fortywe have bags ()all colors ()20 dollars.(用for in at 填空)thisbas 第四题的第一小题和第二小题怎么写? 师父领进门,修行靠个人(解释中文意思) 我们电子公司要和外国人谈判,有没有精通会议翻译的人呢? 汽车4S综合管理系统 翻译成英文,怎么写 “师傅领进门, 与0.3molH2O中含有相同氢原子数的是下列哪种物质?A.0.3molHNO3 B.3.612x10^23个HNO3分子 C.0.1molH3PO4 D.0.2molCH49.03x10^23个氮分子含_______摩氮原子,__________摩氢原子,___________摩质子,________个电子.在KCL和CACl2 汽车英语 里关于4s全文的翻译 已知4-根号2的整数部分为a,小数部分为b,求a的平方+b的平方的值 用水稀释0.1mol/L氨水时:1.c(H+)和c(OH-)的乘积 2.OH-的物质的量 它们如何变化,为什么呢? 某氯化镁溶液的密度为1.18g/cm,其中镁离子的质量分数为5.1%,300ml该溶液中氯离子的物质的量约为:很难吧 智能ABC怎样增加新词组有些词组很荒谬还有怎么删除呢 所有人可见是什么意思? 常温常压下,20L氢气和氧气的混合物点燃爆炸后,恢复到原来的状态,气体体积为2L,求氢气和氧气的体积各是多少? 我要换鞋 英语怎么说我只知道I want to my 这2个单词是什么 女人说臭美包含哪些意思 什么成语, 换鞋.用英语短语怎么说? 倾女人所有是什么意思 英语翻译用上 I、want、to make friends with him、see、him、as soon as , 你的鞋子在哪里?在门后.用英文怎么说? 什么字能代表高贵和优雅最好有具体印证 "谁第一个发现它" 翻译成英文. 英语好滴同鞋,Gone so long why are you in my life 知道意思,求发音!跪谢! 为什么浓硝酸能和铜反应呢?按照活泼性不是不应该反应吗? 蝴蝶椅子的正式英文翻译是什么? 已知4-√2的整数部分为a,小数部分为b.求a,b的值.计算a的负一次加b的负一次的值. 高一化学重点内容 想将幸福灯饰翻译成英语~~~~有没有高手指点迷津,谢谢~~~ 商务英语难不难学啊?我英语不太好,但想学商务英语想请问难不难学啊? 商务英语可不可以补考初级直接考中高级?难不难考? 急需一份关于客户满意度和客户忠诚度方面的英文文献,如题,需要一份英文文献,关于客户满意度和忠诚度的,文献要有5000个单词左右.文献出处一定要有啊,我写论文用,实在找不到了.我要原文 身份是什么的?尊贵的? 地位是什么的?高贵的?贵字重复了怎么办?最好能把高贵换个词,或者.总之,合理且不重复就行.谁能帮帮,谢谢 商务英语可不可以直接考高级?商务英语是从初级开始考,考了在考中级还是可以直接考高级?每个等级相当于哪种水平? 关于品牌忠诚度的 英语文献|英文全文 带译成汉字 rt怕带分提问木有人回答``浪费还是该追加``稳当晕 补充一点...译成汉字要有3000字...1楼的译过来大概有1200字...差1800额 商务英语难不难学商务英语学些什么内容? BEC高级考不好能不能再多考几次BEC高级考过刚刚合格,想在考几次,还可以吗 英语翻译“新闻从业者的职业忠诚度” BEC初级难不难? 英语翻译1.HOPP以及抗静电剂、抗粘剂等各种辅助剂的进料检验.2.BOPP薄膜生产过程中的质量监控和对BOPP薄膜各种添加助剂进行效果追踪.3.新产品配方的研发和试验,以及后续效果的追踪.4.产品 喝了氧化乐果之后会怎么样?喝了氧化乐果对身体有什么反应?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘