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

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

回顾苹果2013:硬件几乎无突破 热衷收购 敏捷开发流程管理须参考的3个要素 微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来 Jail Breaking之后,iOS 7的指纹识别还hold住么? “勇者前线”开发商Gumi获1900万美元融资 工信部发首批10张虚拟运营商牌照 开发者有哪些新机会 【PPT集萃】十位一线专家分享Spark现状与未来 谁主沉浮,亚马逊和思科角力DaaS市场 忆往昔峥嵘岁月稠——看苹果第一代iPhone的“风骚”往事 开源工具链“大牛”的经验分享:HelloGCC 2013精彩演讲回顾 20个超实用的JavaScript技巧及最佳实践 【开源专访】Linux Deepin:做更好用的Linux桌面系统 访Andy Jassy:感受亚马逊AWS生态观,思考国内外云计算差异 站到风口,最先飞起来的能将服务做到极致的IDC 苹果Siri再获一专利:可使用自然语音输入来搜索和标记图片 研发周报:Google抛弃C语言,采用Go语言重写Go编译器 取其精华 IE11里移除和新增的功能 大胆预测亚马逊即将推出的五大产品或服务 移动周报:GitHub章鱼猫中国之行 三星与LG的新动向:同样的物联网 ,不同的玩法 从Twitter到Tinder,看社交媒体在2013年的沉浮 一周消息树:有道周枫和他的“放养”团队、太极助手惹“非议” Netflix:使用大数据驱动商业决策 “中国杯”游戏极限开发大赛报道 回顾2013软件开发:JavaScript领风骚 京东“宙斯杯”创新应用大赛,百万奖金为“你”而等待 12306上的分布式内存数据技术GemFire Canalys:苹果、三星2014年仍统治平板市场 微软压力山大 Google和苹果的下一个战场 回顾2013科技界大事件:Mayer登Vouge杂志、Ballmer离职 《近匠》第03期:移动开发工具访谈,AVOS Cloud——后端的金刚钻 在西单,居然有个MM说。。。。。。。。(真事) 如何判断程序是否使用了MFC库 如何用Canvas将Memo中的内容显示到Image上? 嗨!你去拒绝那个白痴吧,我真受不了他了。我要退分!!! 有全套的ERP源代码为你提供 请问那里有C++builder 6.0的书? 关于函数调用的问题,各位指教 ◎◎◎◎◎◎◎ 关于POP3协议 ◎◎◎◎◎◎◎◎◎ 哪位朋友知道中国移动的网址,可以查询话费和账单的? 各位GG,妹妹对你的爱称是哪个? VC6中基于mfc的一个程序,我想用API函数 ImageNtHeader,却得到如下提示(见内)请问如何解决?? 使用VS.net开发的程序是不是必须在装有.net framework的机器上才可以运行? 如何对内存变量中的xml字符串进行分析操作? VB调用Excel,如何设置单元格中的数字为文本格式 请问成人自考电大与正规大学在招聘时区别大吗? Delphi高手,快来帮忙 我爱西瓜小姐 想看有关VB源码 超级难题啊,痛苦! 局域网下在WIN2000/XP里如何用VB程序自动改变IP? 请招人时自考成人电大与正规大学的差多少呢?急! MDI子窗体显示时有一个明显的由小到大的变化过程,看起来很不舒服,请教该如何解决? 怎样用语句创建NMSMTP控件 局域网下在WIN2000/XP里如何用VB程序自动改变IP? 在Delphi 如何像C++里用extern关键字来引用另外一个单元的全局变量? 对联 谁能帮我出一套关于JSP高级程序员的面试题,并附答案!高分相送,不止这100分 MFC中对文本文件能否以行为单位进行读写 大侠给几篇C程序原代码 到底要怎样才能用好progressbar进度条? 参与者有分! 怎样调用 其它窗体的内的对象的属性?? JSP的应用经验 工具条的问题,求解 我喜欢西瓜小姐 我公司现有固定电话收发电子邮件系统,可收附件,将WORD,HTML文档转换为TXT文本 关于内码问题 远程控制 关于JDBC2.0的问题(50分!!!!) 哪位有高招? 升级BIOS和升级主板? 急!急!急!急!窗口不能关闭. 哥哥姐姐们请帮忙???(急需linux环境下用php+mysql如何实现搜索引擎) 大家赞不赞成开一个Palm技术区?赞成的跟贴,满50个就开。 定义 Dim reader As System.Data.SqlClient.SqlDataReader lvlvlvlylyly请看,你的贴子我加不上了,还查一段程序加在这里了 如何传送monthview1中用户选择的日期到其他窗体里 你该怎么做呢 国内什么样的网站托管好?还是选择国外的? 女网友一定要小心 mschart控件问题 赶快来尝试一下吧! Na2O2和H2SO4反应,H2SO4为什么是冷而稀啊是浓的话方程式是什么? 在焰色反应中 鉴定钾离子时蓝色钴玻璃的作用? 用小苏打片水清洗外阴及阴道口有什么作用?另注:怀孕初期的孕女可否使用? Na2O2与稀硝酸反应的方程式谢谢 可乐密度大还是水的密度大?.实际上我还想问可乐密度大还是七喜密度大0.0\x09求大神帮助 请问:丙烯酰胺对人体的中毒量是多少?(由消化道进入) 酒可以二次蒸馏吗 Na2O2与Na反应生成Na2O的条件是什么? 用小苏打水清洗阴道,会有副作用吗?男女都能用来清洗吗?怎么个配比?不是说能治疗霉菌性阴道炎吗>怎么会有副作用呢/能说的具体点吗> 为了验证突触传递的特点,自选实验器材来设计实验进行探究(有一个图是:轴突→突出囊泡→肌膜 的一个过程画的和课本上描述神经递质的释放图一样就是多标了这几个字样)第一步:第 FeSO4和Na2O2反应生成什么?题目中告诉我FeSO4和Na2O2的比为1:1 饼干里对身体不好的物质中,最多的是不是丙烯酰胺?饼干里对身体不好的物质是不是丙烯酰胺? 关于生物实验原理探究性实验实验原理怎么写啊?比如探究甲状腺激素对小鼠新陈代谢的影响 实验是通过测定小鼠吸进的O2来探究的这个实验实验原理该写甲状腺激素会影响新陈代谢从而影响 聚乙稀和聚丙稀怎么区分?比如用火烧有什么不一样? 丙烯对人体有什么危害 生物实验原理怎么写 Na2O2反应生成什么 丙烯对身体有害吗? 癌细胞的恶性增殖和转移与癌细胞膜成分的改变有关.那到底是什么成分改变呢?癌细胞的恶性增殖和转移与癌细胞膜成分的改变有关.具体是哪些成分改变?为什么这些成分改变就会引起癌细胞 原理比如:单一变量、等量最适……还有什么? 到底有没有聚乙烯酰胺?听说是从聚丙烯酰胺中提炼出来的 也是洗煤厂 污水处理什么用的 可是在百度上总查不到关于聚乙烯酰胺的信息啊.不会吧。。 我爸说的啊 他厂子里产的这个 神经纤维膜经去极化,反极化,负极化后,钾钠离子换了位置,那后面怎么换回来使钠在外,钾在内? 糖尿病患者为什么尿量增多尿中有糖 钾离子氢离子醋酸根离子氯离子共存吗? 癌细胞为什么能无限增殖?最新的理论是什么 散聚的读音六年 Hi 怎样鉴别亚硝酸钠和硝酸钾 Fe2O3和浓H2SO4加热会反应吗 吡嗪酰胺怎么读法 向a 体积0.05m o l l 的醋酸中加入b 体积0.05m o l l 的K O H 中,a >b则醋酸和醋酸根离子与钾离...向a 体积0.05m o l l 的醋酸中加入b 体积0.05m o l l 的K O H 中,a >b则醋酸和醋酸根离子与钾离子的关 Fe2O3与H2SO4反应的离子方程式 请你设计一个小探究实验,证明蝗虫呼吸时气体进入身体的结构在胸部和腹部,而不在头部.(实验设计题) 哪种食品中含亚硝酸钾和亚硝酸钠 Fe2O3、K2Cr2O2、H2SO4反应的方程式 可乐与水的密度一样吗? 测量可乐的密度只有橡皮筋、细线、石块、刻度尺和足够的水.(1)推导出测量可乐密度的数学表达式;(2)说明测量步骤 淘米水的妙用 阅读答案 NA2SO4 加什么 发生什么反应生成H2SO4应该不能用酸吧 H2SO4就是强酸了 不是强酸置弱酸吗?那要怎么反应? 丙酮为什么能使蛋白质变性?是什么官能团参与反应? 淘米水的妙用的答案啊~! Na2O2+H2SO4+KMnO4反应中哪个为还原剂 GUS染色中,丙酮固定的作用是什么,是沉积蛋白吗?强酸、强碱、有机溶剂都可以使蛋白变性,但是我的问题是gus染色中丙酮的作用,如果也是让蛋白变性,那变性的蛋白没有了酶活,怎么和底 水开久了会产生亚硝酸盐,喝了对人体有害是吗?那么煲汤的水不是也开很久吗?还有外面煮拉面的水啊什么的不是一直都在滚吗?是不是都有害? 为什么NO不能和浓H2SO4或Na2O2反应被氧化? 为什么尿液经常会是黄色的? 淘米水的妙用 怎样鉴定钾离子 用六亚硝基合钴络离子现象 方程式 新鲜蔬菜最好不要隔夜食用,彩业中的硝酸盐容易变为亚硝酸盐,危害人体健康.这句话对不对呢?是一道判断题,请各位高手们帮忙解答,谢谢! 淘米水可以干什么? 大量存在会干扰钾离子的鉴定的离子是 为什么会经常尿黄,尿热呢? 癌细胞的转移为什么与细胞膜上糖蛋白的减少有关? 1、除去食盐中的杂质氯化钙和硫酸钠的方程式2、除去食盐中的杂质氯化钙 为什么我的尿经常是黄色的?本人有一年的前列腺炎,现在是慢性的了.最近小便总是黄色,我很郁闷.我不尿频,但是小便时还会变黄,这是为什么?我想去做尿检,有用麻?我喝好多水,还经常打打篮 癌细胞转移与细胞膜上糖蛋白减少有关,构成糖蛋白的多糖和蛋白质共有的元素是? kcl,k2so4都属于钾盐,都含有钾离子,怎样鉴定钾离子 > 尿黄,为什么? 细胞膜上糖蛋白的减少属于癌细胞物理\化学还是生物条件 谁能够告诉我钾离子除了焰色反应还可以用什么方法鉴定 pam(聚丙稀酰胺)、pac(聚氯化铝)、paf(聚氯化铁)对人体的危害
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘