明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用Delphi開發(fā)容易的WebMail程序

[摘要]文/北京 張維  WebMail是指在網(wǎng)頁(yè)中實(shí)現(xiàn)郵件的發(fā)送。使用Delphi開發(fā)Web Server程序是非常簡(jiǎn)單的,Delphi中提供了大量的元件和對(duì)象。下面通過(guò)一個(gè)例子來(lái)介紹如何利用Delphi開發(fā)一個(gè)響應(yīng)用戶輸入的ISAPI的WebMail程序。為了簡(jiǎn)單,程序沒(méi)有對(duì)傳送的數(shù)據(jù)提供保密。   ...
文/北京 張維

  WebMail是指在網(wǎng)頁(yè)中實(shí)現(xiàn)郵件的發(fā)送。使用Delphi開發(fā)Web Server程序是非常簡(jiǎn)單的,Delphi中提供了大量的元件和對(duì)象。下面通過(guò)一個(gè)例子來(lái)介紹如何利用Delphi開發(fā)一個(gè)響應(yīng)用戶輸入的ISAPI的WebMail程序。為了簡(jiǎn)單,程序沒(méi)有對(duì)傳送的數(shù)據(jù)提供保密。


  首先,在Web服務(wù)器端安裝數(shù)據(jù)庫(kù)引擎dbe,并設(shè)置好數(shù)據(jù)庫(kù)別名:yh,指向一個(gè)包含用戶名和用戶密碼的數(shù)據(jù)庫(kù)文件user.db。接著建立兩個(gè)HTML文件,名字分別為:dl.html,qd.html,放在Web服務(wù)器的缺省目錄下(如:c:\inetpub\wwwroot)。

  dl.html的內(nèi)容如下:

  <html>

  <head><title>發(fā)送郵件系統(tǒng)</title></head>

  <body>

  <h1>發(fā)送郵件系統(tǒng)</h1>

  <p>請(qǐng)輸入您的用戶名及密碼</p>

  <form method=”post”action="/scripts/SendMail">

  <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文件內(nèi)容如下:

  <html><head><title>填表</title></head>

  <body>

  <form method=”post”action="feedback">

  <p>請(qǐng)?zhí)钊虢邮锗]件地址:toaddress:

  <input type=”text”length=20 name=”toaddress”></p>

  <p>請(qǐng)?zhí)钊胫黝}<input type="text" length=20 name="subject"></p>

  <p>內(nèi)容:</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中新建一個(gè)基于ISAPI的Web Server Application,手動(dòng)增加nmsmtp1,query1,pageproducer1。其中:pageproducer1的htmlfile屬性為c:\inetpub\www.root\qd.html。nmsmtp1的host(發(fā)送郵件服務(wù)器的地址)在這里為smtp.netease.com.,port:25。全局變量為:sername:string;flag:boolean。

  增加一個(gè)路徑為feedback的動(dòng)作項(xiàng),其代碼如下:

   Var

   Count:integer;

  S:string;

   Begin

  Query1.close;

  Query1.sql.clear;

  S:=’select count(username) from user.dbswheresusername=”’;

  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>用戶名、密碼不正確,請(qǐng)重新輸入</body>

  </html>’

  Else

  Username:=request.contentfields.values[‘username’];

  Response.content:=pageproducer1.content;

  End;

  再增加一個(gè)路徑為Sendmail的動(dòng)作項(xiàng),它的程序代碼如下:

  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的OnConnect事件添加如下代碼:

  pageproducer1.htmldoc.add('<p>已經(jīng)和發(fā)送郵件服務(wù)器連接</p>');

  在NMSMTP1的Connection事件添加如下代碼:

  flag:=false;

  pageproducer1.htmldoc.add('<p>連接失敗</P>');

  將project存為sendmail.dpr,編譯后放到Web服務(wù)器的可執(zhí)行文件路徑下(如:c:\intpub\scripts),即可響應(yīng)HTML文件dl.htm的用戶輸入,并且如果用戶的用戶名及密碼正確,則可進(jìn)入發(fā)送郵件的頁(yè)面。用戶填寫接受郵件地址及主題、內(nèi)容后,即可發(fā)送郵件。此程序在NT Server上調(diào)試通過(guò)。