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

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

移动应用云服务工具APICloud宣布完美适配iPhone6 从应用分发到能力开放 华为开发者联盟沙龙上的共赢理念 SOOMLA框架:移动游戏分分钟创建个虚拟商店 Facebook:如何让应用适合所有系统、带宽以及屏幕 Docker实践者不能错过2014 Container技术大会的九大理由!(讲师议题全面揭晓) 2014全球云计算大会中国站(CC China)精彩集锦 腾讯X5浏览服务正式开放 30多款APP成为首批受益者 Node.js设计经验谈 LeanKanban University首位中国认证讲师路宁:看板会为更多国内企业带来深刻变革 环信IM沙龙纪实:无分享不IM,无社交不未来 【工具推荐】ESL:更简洁、更高效的标准加载器 【先锋】亲加通讯云:以云服务模式为App提供社交引擎 2014中国移动开发者大调查第一批获奖名单大曝光 移动开发云服务AVOS Cloud宣布完成A轮融资 Uplinq2014:人工智能嵌入硬件 万物互联建生态 Uplinq2014:基于Vuforia的新奇智能玩具 一应俱全!开源跨平台3D应用开发框架Minko 【线下技术培训】敏捷测试实战解析和系统方案 《近匠》Ping++:简单、高效、第三方支付SDK 有关编程的12个猜想 【问底】王帅:深入PHP内核(二)——SAPI探究 【CTO俱乐部走进汽车之家】活动图文实录 只为逼格?超薄便携式无线充电设备Deuce 戴尔未来重心:云计算、大数据、移动互联与安全 【讲师】搜狐于顺治:Container在搜狐PaaS平台中的应用实践 【先锋】从代码层诊断,云端OneAPM平台让开发者专注开发 阿里将推无线领域重磅计划 阿里百川无线开放大会揭晓 提升网站转化率的四步优化方案 开发者应该了解的API技术清单! 【讲师】腾讯刘永峰:Docker时代,公有云面临的挑战和机遇 移动开发工具服务商Mob推出免费短信验证码SDK 我要开放mssql的访问,在防火墙中是不是只要开放1433端口就可以了? 外面买的2000安装盘有的里面只有一个程序,叫什么ghost,好象运行它后就可以非常快的安装2000,请问这个ghost是用哪个软件做的? 系统初始化把所有数据库里面的内容删除,保留表的结构,这是怎么实现的? 如何将AnsiString转换成LPCWSTR? 我想请问一下,当panel显示时如果下面有<select >控件是,这个控件不被盖住,结果好象panel破了下一样,请问题怎么办!谢谢 如何把这个程序转换成java程序,我够菜的:( 高分请教如何实现本地网址过滤?就好像反黄软件,或公安的监控软件一样。 又有问题了 谁能贴一个关于TQUERY,TTABLE等控件的数据库应用的详细使用 我会jsp+servlet sql server完成小项目 找相关工作还咬什么? vs.net的问题,看看你遇到过没有? 答者有分!怎样用超链接调outlook发邮件? 怎样把不同机子上的vc++模块连到一块 关于自增自减运算符的问题-缘引老师的教案 在SCO上配置Informix遇到n多问题 急!寻解线性代数方程组的算法程序或者相关资料 假设在 MDI 程序中打开了3个文档,现在想将其中一个文档提到前面显示 php语法的一个小问题 MM,有个难题急需解决(关于 DateTimePicker控件的) 请看图,长得巨像梁朝伟的工地民工!! §§如何从Variant变量中取出有符号long型值? 关于vc++和visual prolog的接口问题 Exchange 2000 Lotus connector 怎样把<<石器时代>>游戏里的图片和动画弄出来??? 有关PHP使用相对路径访问ACCESS数据库的方法。 大版主,特别是阿信,进来看! 怎么把数字以16进制格式输出 一个奇怪的顺序问题 怎样知道自己被“黑”了? 求一个三角形的组合问题 如何删除CListCtrl的单条或多条选中项 设个标志位,只取0,1两个值,该定什么类型好? 请问如何在vbscript的函数中嵌入asp的response.redirect方法 买了本VB书,很多的案例却不能用,高手帮忙看看! 求书Professional Active Server Pages 3.0 英文版!!!!! 谁有mdeamon服务器设置的相关中文资料呀?本人急需。 请问wacom合肥哪里有卖? 如何获取系统语言? ¥¥谢谢王小石,问题全部解决!我就剩50分了,都给你,过你天有分了,接着给你!! GDI的问题 放分大思考:如果没有IT,我们现在都在做什么?欢迎大家讨论哦 请问存储过程写在那里?我找aspx页面怎么没有看到呢?提示一下就好了 原来昨天不但是6.4还是端午节,祝所有水友快乐! 我在上传文件到数据库时遇到的问题,请指教 对String类的困惑! 请问什么叫差距类型(Dist)呢? tomcat和oracle的问题~~~~~ 请教打印预览时数据窗口中单选按钮如何放大、缩小? ClassRefNotFoundException 公司的发展需要您来参与!! 急!!!在线等等!!!速结!!! 甲、乙两辆功率相等的汽车,如果在相等的时间内匀速通过的距离之比S甲:S乙=3:1,那么下列结论正确的是:A:两辆汽车的牵引力之比为1:3 B:两辆汽车的牵引力之比为3:1 C:两辆汽车所做 量子隧道效应中可以借到能量而通过势垒,那能量还守恒吗?拜托了 优秀的文言文 汽车发动机功率怎么求?【急!】一辆汽车的发动机输出功率为66150W,每小时耗柴油14Kg,请你计算此发动机的效率.(柴油机的热值为43000000/Kg) 左室舒张功能降低是什么意思 两根间距为L的足够长的金属直角导轨如图所示放置,他们各有一边在同一水平面内另一边垂直于水平面.质量为均为m的金属细杆ab、cd与导轨垂直接触形成闭合回路,杆与导轨之间的动摩擦因数 如下图,在长方体ABCD-A1B1C1D1中,AA1=3,AD=4,AB=5,沿长方体的表面从 A到C1的最短距离为_____ 为什么答案是4倍根号5而不是根号74 低漏电解电容的作用是什么? 最精彩的古文 最美妙的古文 最绝伦的古文 最极品的古文大家认为是哪一篇~只限一篇哦~是一篇~是一篇~ 已知角阿尔法等于五十度且角阿尔法的两边与角贝塔的两边互相垂直,则角贝塔=什么? 黄冈密卷 选修3-1 第三部分(21)(22)答案! 氢原子从定态向基态跃迁 可以辐射连续光谱这句话怎么错了求详细解释和扩充 球面反射镜无球差的点共有几个? 铁路运费是按重量还是按车皮计算的? 空气支不支持燃烧?RT 在哪里可以买到大口径的凹形反射镜最近想自制一个想天文台的望远镜一样大的望远镜,不知那里可以买到那么大口径的反射镜 汽车车皮啥材质? 一氧化碳支不支持燃烧 显微镜下方常用一小镜来做反射镜,这一小镜是__镜或__镜,它的作用是使人看到的像的亮度__(增强或减弱)在光线较暗时应使用————镜?有额外分! 人的血液中含有+3价的铁离子么? 我的货车行驶证上的车皮重量二吨三,但实际重量是三吨,怎么弄.二吨的吨位,这样只能拉一吨半,拉二吨就超载. 相同情况下,单根导线切割磁感线产生的电流为什么比线圈小 人站在凸球面反射镜前,若是人站在凹球面反射镜前呢?人站在凸球面反射镜前,能否看到和自已等大的像?若是人站在凹球面反射镜前呢?能否看到和自已等大的像? 物理选修3-3 复习提纲 以及 一道计算题,一滴露水的体积大约为 6.0X10-7 cm3 ,若果一只极小的虫子喝水,每分钟喝 6.0 X 107个水分子,他需要多少年才能喝完 在mstp 中的STM-1,STM-4,STM-64分别代表什么意思? 长方体ABCD-A1B1C1D1,Ab=3,AD=6,AA1=4求点A到平面D1CA1的距离 高中物理选修1-1第二章计算题 CaCl2为什么可以除去乙醇?发生什么反应了? 外界因素(如温度)可以缩短半衰期吗,为什么? 黄粉虫养殖跟繁殖技术!黄粉虫吃什么?黄粉虫要在什么条件下才繁殖?虫卵孵化要什么条件?成虫要在什么条件下才繁殖,虫卵变成虫要在什么条件, 氯化钙能与乙醇反应吗 臭氧半衰期跟温度有关吗臭氧在水温37℃的时候能在水中保持多长时间呢,谁知道? 元素的半衰期随温度变化吗? 乙醇会与氯化钙反应吗? 请问:物理学中的质点应该如何判断? 放射性元素半衰期有没有可能可以改变? 怎样提高物理实践能力? 因为质点没有大小,所以与几何中心没有区别.这句话哪儿错了,杜绝抄袭. 怎样判断物体是否为质点啊? 2FeCl2+Cl2=2FeCl3怎么判断哪个氧化性强于哪个上面是第1个 第2个大问题 1)Cl2+2KI=2KCl+I2  (2)2FeCl2+Cl2=2FeCl3(3)2FeCl3+2HI=2FeCl2+2HCl+I2   (4)H2S+I2=2HI+S①可知氧化性是氯气强于单质碘的 瓦和千瓦时之间的进率第二天要交作业的~~~请给我一个满意的回答 1怎样判定物体可以作为质点.2问一下王后雄作为高中物理参考书,怎么样? 为什么饱和氯化钙可以除去乙醇 放射性元素半衰期与温度物理学上说放射性元素半衰期是核内部的性质,与外界物理化学环境无关.但是化学动力学说衰变是一级反应,根据阿伦尼乌兹公式计算速率常数,说明和温度有关.这两 在高中物理中,到底质点如何分别呢?求帮我归纳一下.比如“转动物体不可看作质点” 扫描隧道显微镜可以把一个物体放大多少倍?精确点 千瓦时化焦进率 均匀变化的电场激发出恒定的磁场,均匀变化的磁场激发出恒定的电场,那么.对于一个产生电磁波的点源,是不是只能电场磁场相互激发有限次,最后得到恒定的电场或磁场?如果最后得到了恒定 土壤中植物不同生育期内铵态氮正常值范围是多少啊? 隧穿效应中粒子是越过势垒还是穿透势垒 电场能激发磁场,所以当在一个变压器内,电场的功变为磁场的功,在被还原为电场的功吗?变压器的能量守恒是怎么回事,我觉得输入决定输出很重要,是由于输出多少能,确定了副线圈的电压,在 常数项算不算一项式?举个简单的例子吧。2x+3y+6、、这个常数项6算一项式吗??这个式子是三项式还是两项式【不好意思哇,才学,很多不懂的】 高中物理质点是什么 物理选修3-3计算题在解答过程中根据什么原理还写吗? X+X=0,中的0算不算常数项 把电荷量q=1.0×10-5C的电荷从A点移到B点,电场力做功W=2.0×10-2J,则电荷的电势能为 ,若规定B点为零电势,则电荷在A点的电势能EPA为 ; A点的电势 = . 霍尔电动势产生的原理(简明扼要) 7+c算不算常数P+Q=(3+a)x的平方+(b-6)x+(7+c)当a=-3 b=6时P+Q算不算常数到底算不算啊,不算也得告诉我为啥如果不是常数的话a=?b=?时P+Q是常数 如图所示,真空中有q=8.0×10^-5c的点电荷,在距离r=2.0的a位置有一电荷量q=+1.0×10^-9C的检验电荷,已知静电力常量k=9.0×10^9N-m^2/C^2.求:(1)两电荷间的库仑力F的大小(2)A点的电场强度E的大小 正弦电动势的产生原理? 伊朗“巴斯基”武装力量在伊展开演习 日媒醋意评价朴槿惠外交策略 称其无视德媒:斯诺登与德绿党议员见面 有意前万圣节狂欢化装派对 萌“小鬼”们惹人国际刑事法院再次推迟肯尼亚总统出庭受澳维州出台新法规定性侵犯再犯案将不准秘鲁组成新内阁 塞萨尔 比利亚努埃瓦盟友也要区别对待 日本德国仍是美国监英国房价一年上涨5.8% 专家警告“温家宝2010年与大学生座谈:大学生日议员向天皇塞信望其了解民间疾苦 或温家宝出书谈教育忆童年 部分通信首次观察:中国高层释楼市调控信号 长效机日本大规模夺岛军演科目敏感 专家:在香港立法会将讨论是否暂停对菲律宾人入爱,从头开始“给妈妈梳头”走进北京回台州今起发布县级空气质量指数 上网可签证利好出境游升温 百度知心搜索成\原吉林省常务副省长田学仁受贿1919浙江金华召开动员部署会 整治“中国式高考语文分值将增加 教师:传统文化如巴基斯坦安检点发生自杀式爆炸袭击 两C罗“戴帽”去巴西韩亚航空旅客服务系统全面升级世界女子职业冲浪赛今日开幕申花的悲剧:缺失的海派足球文化特色银行卡权益日渐丰富伊朗公布新型国产战略无人机乌鲁木齐经济技术开发区违法建筑被依法新疆伊宁市汉宾派出所第一社区有了“警《超模之路》登陆广西卫视美纪念“葛底斯堡演说”150周年新华书店“主题店”亮相外滩源叙利亚化武或将在海上销毁摔死女童案二审 法院未宣判美华媒:中美“斗而不破”态势难变湖北政协原副主席陈柏槐涉违纪被查安徽“卫立煌故居”受赠多件抗日名将卫中国央行副行长:未来将分三步推进利率我省新增10个本科专业卓越工程师教育联想控股佳沃集团开展葡萄酒业务邓文迪将签离婚协议 消息称其未获新闻
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘