WebMail是指在網頁中實現郵件的發送
使用Delphi開發Web Server程序是非常簡單的
Delphi中提供了大量的元件和對象
下面通過一個例子來介紹如何利用Delphi開發一個響應用戶輸入的ISAPI的WebMail程序
為了簡單
程序沒有對傳送的數據提供保密
首先在Web服務器端安裝數據庫引擎dbe並設置好數據庫別名yh指向一個包含用戶名和用戶密碼的數據庫文件userdb接著建立兩個HTML文件名字分別為dlhtmlqdhtml放在Web服務器的缺省目錄下(如c\inetpub\wwwroot)
dlhtml的內容如下
<html>
<head><title>發送郵件系統</title></head>
<body>
<h>發送郵件系統</h>
<p>請輸入您的用戶名及密碼</p>
<form method=postaction=/scripts/SendMail>
<p>用戶名<input type=text length= name=username>
密碼< input type=password length= name=password ></p>
<p><input type=submit value=確定>
<input type=reset value=清除></p>
</form>
</body>
</html>
qdhtml文件內容如下
<html><head><title>填表</title></head>
<body>
<form method=postaction=feedback>
<p>請填入接收郵件地址:toaddress:
<input type=textlength= name=toaddress></p>
<p>請填入主題<input type=text length= name=subject></p>
<p>內容</p>
<p><input type=textarealength= width= name=body></p>
<p><input type=submit value=確定>
<input type=reset value=清除></p>
</form >
</body >
</html >
在Delphi中新建一個基於ISAPI的Web Server Application手動增加nmsmtpquerypageproducer其中pageproducer的htmlfile屬性為c:\inetpub\wwwroot\qdhtmlnmsmtp的host(發送郵件服務器的地址)在這裡為smtpneteasecomport:全局變量為sername:string;flag:boolean
增加一個路徑為feedback的動作項其代碼如下
Var
Count:integer;
S:string;
Begin
Queryclose;
Querysqlclear;
S:=select count(username) from userdbswheresusername=;
S:=s+requestcontentfieldsvalues[username]+;
S:=s+and password=;
S:=s+requestcontentfieldsvalues[psword]+;
Querysqladd(S);
Queryopen;
If querycount= then responsecontent:=
<html><head><title>
</title>
<body>用戶名密碼不正確請重新輸入</body>
</html>
Else
Username:=requestcontentfieldsvalues[username];
Responsecontent:=pageproducercontent;
End;
再增加一個路徑為Sendmail的動作項它的程序代碼如下
Var body:string;
Begin
Flag:=true;
body:=requestcontentfieldsvalues[body];
Pageproducerhtmldocclear;
Pageproducerhtmldocadd(< html >< body >);
Nmsmtppostmessageclear;
Nmsmtppostmessagefromaddress:=username+@neteasecom;
Nmsmtppostmessagefrom:=username;
Nmsmtppostmessagebodyadd(body);
Nmsmtppostmessagetoaddressadd(requestcontentfieldsvalues[toaddress]);
Nmsmtppostmessagesubject:=requestcontentfieldsvalues[subject]
Nmsmtpconnect;
If flag=true then
begin
Nmsmtpsendmail;
nmsmtpdisconntent;
end
pageproducerhtmldocadd(</body></html>);
responsecontent:=pageproducercontent;
end;
增加nmsmtp的OnConnect事件添加如下代碼
pageproducerhtmldocadd(<p>已經和發送郵件服務器連接</p>):
在NMSMTP的Connection事件添加如下代碼
flag:=false;
pageproducerhtmldocadd(<p>連接失敗</P>);
將project存為sendmaildpr編譯後放到Web服務器的可執行文件路徑下(如c:\intpub\scripts)即可響應HTML文件dlhtm的用戶輸入並且如果用戶的用戶名及密碼正確則可進入發送郵件的頁面用戶填寫接受郵件地址及主題內容後即可發送郵件此程序在NT Server上調試通過
From:http://tw.wingwit.com/Article/program/Delphi/201311/24974.html