일반적으로 mailto.exe의 CGI를 사용하여 WEBMAIL을 구현하는데, HTML 파일에 "< form action="mailto:email address" method=post >" 문을 작성하거나 WINDOWS API 함수를 호출합니다. WINDOWS API를 사용하고 HTML 파일에 "< form action="mailto:email address" method=post >" 문을 작성하려면 사용자 브라우저에서 EXCHANGE, OutlookEXPRESS 또는 OUTLOOK과 같은 소프트웨어를 로드해야 하며 일부도 있습니다. 찾아보기 서버가 MAILTO 문을 지원하지 않습니다. WEBMAIL을 구현하기 위해 CGI를 사용하면 사용자 브라우저에 대한 요구 사항이 없지만 효율적이지 않습니다. CGI 기술은 점차 ISAPI/NSAPI 기술로 대체되고 있습니다. 이 기사에서는 ISAPI 기술을 사용하여 WEBMAIL을 구현하는 방법에 대해 설명합니다.
Delphi 4를 사용하여 웹 서버 프로그램을 개발하는 것은 매우 간단합니다. Delphi 4는 웹 서버 프로그램 개발을 지원하기 위해 수많은 구성 요소와 개체를 제공합니다. 다음은 DELPHI를 사용하여 사용자 입력에 응답하는 ISAPI WEBMAIL 프로그램을 개발하는 방법의 예입니다. 보내는 서버에 등록된 사용자만 브라우저를 통해 이메일을 보낼 수 있습니다. 단순화를 위해 프로그램은 전송된 데이터에 대한 기밀성을 제공하지 않습니다.
먼저 웹 서버에 데이터베이스 엔진 dbe를 설치하고 데이터베이스 별칭을 yh로 설정합니다. 이는 사용자 이름과 사용자 비밀번호가 포함된 데이터베이스 파일 user.db를 가리킵니다. 그런 다음 각각 dl.html, qd.html이라는 두 개의 HTML 파일을 생성하여 웹 서버의 기본 디렉터리(예: C: INETPUBWWWWROOT)에 배치합니다.
dl.html의 내용은 다음과 같습니다.
<html>
< head >< title >이메일 전송 시스템</ /title >< /head >
<본문>
<h1>이메일 전송 시스템</h1>
< p > 사용자 이름과 비밀번호를 입력하세요. < /p >
< 양식 방법="포스트" 조치="/scripts/xsmd" >
< p >사용자 이름: < input type="text" 길이=10
이름="사용자 이름" >
비밀번호: < 입력 유형="passWord"
길이=10 name="password" >< /p >
< p >< 입력 유형="제출" 값="확인" >
< input type="reset" value="Clear" >< /p >
< /양식>
< /본문 >
< /html >
qd.html 파일의 내용은 다음과 같습니다.
< html >< head >< title >양식 작성</ /title >< /head >
<본문>
< 양식 방법="게시물" 조치="피드백" >
< p >수신 이메일 주소를 입력하세요:toaddress:
< 입력 유형="텍스트" 길이=20
이름=”주소” >< /p >
< p >제목을 채워주세요. < 입력 유형="텍스트"
길이=20 이름="주제" >< /p >
<p>콘텐츠:</p>
< p >< 입력 유형="텍스트 영역" 길이=40
너비=40 이름=”본문” >< /p >
< p >< 입력 유형="제출" 값="확인" >
< input type="reset" value="Clear" >< /p >
< /양식>
< /본문 >
< /html >
DELPHI에서 새로운 ISAPI 기반 WEB SERVER 애플리케이션을 생성하고 nmsmtp1, query1 및 pageproducer1을 수동으로 추가합니다.
그중에는 pageproducer1의 속성: htmlfile: c:inetpubwww.rootqd.html이 있습니다. nmsmtp1의 속성:host(보내는 메일 서버의 주소)는 여기서 smtp.netease.com입니다. 포트:25. 전역 변수는 다음과 같습니다: sername:string;flag:boolean;
/feedback 경로를 사용하여 작업 항목을 추가합니다. 코드는 다음과 같습니다.
프로시저 TWebModule1.WebModule1WebActionItem1
Action(보내는 사람: TObject;
요청: TWebRequest;
TWebResponse; var 처리됨: 부울);
변수 개수:정수;
S:문자열;
시작하다
쿼리1.닫기;
Query1.sql.clear;
S:='다음에서 개수(사용자 이름) 선택
user.db 여기서 사용자 이름=”';
S:=s+request.contentfields.values['사용자 이름']+'"';
S:=s+' 및 비밀번호=”';
S:=s+request.contentfields.values['psword']+'"';
Query1.sql.add(S);
쿼리1.열기;
query1.count=0인 경우
그런 다음 response.content:='< html >< 머리 >< 제목 >
< /title >< body >사용자 이름과 비밀번호가 올바르지 않습니다. 다시 입력해 주세요.
< /body >< /html >'
또 다른
사용자 이름:=request.contentfields.values['사용자 이름'];
Response.content:=pageproducer1.content;
끝;
/sendmail 경로를 사용하여 다른 작업 항목을 추가합니다.
해당 프로그램 코드는 다음과 같습니다.
절차 TWebModule1.WebModule1Web
ActionItem2Action(발신자: TObject;
요청: TWebRequest;
TWebResponse; var 처리됨: 부울);
Var 본문:문자열;
시작하다
플래그:=true;
body:=request.contentfields.values['body'];
Pageproducer1.htmldoc.clear;
Pageproducer1.htmldoc.add('< html >< body >');
Nmsmtp1.postmessage.clear;
Nmsmtp1.postmessage.fromaddress:=사용자 이름+
'@netease.com';
Nmsmtp1.postmessage.from:=사용자 이름;
Nmsmtp1.postmessage.body.add(body);
Nmsmtp1.postmessage.toaddress.add
(request.contentfields.values['toaddress']);
Nmsmtp1.postmessage.subject:=
request.contentfields.values['주제'];
Nmsmtp1.connect;
flag=true이면 Nmsmtp1.sendmail을 시작합니다.
nmsmtp1.disconntent;끝
pageproducer1.htmldoc.add
('< /body >< /html >');
response.content:=pageproducer1.content;
끝;
nmsmtp1을 증가시키는 이벤트는 다음과 같습니다.
절차 TWebModule1.NMSMTP1Connect(Sender: TObject);
시작하다
pageproducer1.htmldoc.add
('< p >보내는 메일 서버에 이미 연결되어 있습니다</p>');
끝;
절차 TWebModule1.NMSMTP1Connection
실패(발신자: TObject);
시작하다
플래그:=false;
pageproducer1.htmldoc.add
('< p >연결 실패< /P >');
끝;
절차 TWebModule1.NMSMTP1ConnectionRequired
(var 처리됨: 부울);
시작하다
pageproducer1.htmldoc.add('< p >연결 필요</p>');
끝;
절차 TWebModule1.NMSMTP1Failure(Sender: TObject);
시작하다
pageproducer1.htmldoc.add('< p >이메일 전송 실패</p>');
플래그:=false;
끝;
절차 TWebModule1.NMSMTP1Header
불완전(var 처리됨: 부울;
hiType: 정수);
시작하다
pageproducer1.htmldoc.add('< p >헤드가 불완전합니다</ /p >');
플래그:=false;
끝;
절차 TWebModule1.NMSMTP1InvalidHost
(var 처리됨: 부울);
시작하다
pageproducer1.htmldoc.add('< p >
보내는 이메일 서버 주소가 잘못되었습니다</p>');
플래그:=false;
끝;
절차 TWebModule1.NMSMTP1RecipientNot
찾음(수신자: 문자열);
시작하다
pageproducer1.htmldoc.add
('< p >수신된 이메일 주소가 올바르지 않습니다</p>');
플래그:=false;
끝;
절차 TWebModule1.NMSMTP1성공(
보낸 사람: TObject);
시작하다
pageproducer1.htmldoc.add('< p >
이메일이 성공적으로 전송되었습니다.</ /p >');
끝;
프로젝트를 sendmail.dpr로 저장하고 컴파일한 후 웹 서버의 실행 파일 경로(예: c:intpubscripts)에 넣으면 HTML 파일 dl.htm의 사용자 입력에 응답할 수 있습니다. 사용자 이름과 비밀번호가 정확해야 이메일 발송 페이지에 들어갈 수 있습니다. 이메일 주소, 제목, 내용을 입력한 후 이메일을 보낼 수 있습니다. 이 프로그램은 NT SERVER에서 디버깅을 통과했습니다.