Normalerweise wird das CGI von mailto.exe verwendet, um WEBMAIL zu implementieren, indem die Anweisung „< form action="mailto:email address" method=post >“ in die HTML-Datei geschrieben oder die WINDOWS-API-Funktion aufgerufen wird. Die Verwendung der WINDOWS-API und das Schreiben der Anweisung „< form action="mailto:email address" method=post >“ in die HTML-Datei erfordern beide, dass der Browser des Benutzers Software wie EXCHANGE, OutlookEXPRESS oder OUTLOOK lädt, und es gibt auch einige Durchsuchen Der Server unterstützt die MAILTO-Anweisung nicht. Die Verwendung von CGI zur Implementierung von WEBMAIL stellt keine Anforderungen an den Browser des Benutzers, ist jedoch nicht effizient. Die CGI-Technologie wird nach und nach durch die ISAPI/NSAPI-Technologie ersetzt. In diesem Artikel wird die Implementierung von WEBMAIL mithilfe der ISAPI-Technologie erläutert.
Es ist sehr einfach, Webserver-Programme mit Delphi 4 zu entwickeln. Delphi 4 bietet eine große Anzahl von Komponenten und Objekten zur Unterstützung der Entwicklung von Webserver-Programmen. Im Folgenden finden Sie ein Beispiel für die Verwendung von DELPHI zur Entwicklung eines ISAPI-WEBMAIL-Programms, das auf Benutzereingaben reagiert. Nur auf dem sendenden Server registrierte Benutzer können E-Mails über den Browser senden. Der Einfachheit halber verzichtet das Programm auf eine Vertraulichkeit der übermittelten Daten.
Installieren Sie zunächst die Datenbank-Engine dbe auf dem WEB-Server und legen Sie den Datenbankalias yh fest, der auf eine Datenbankdatei user.db verweist, die den Benutzernamen und das Benutzerkennwort enthält. Erstellen Sie dann zwei HTML-Dateien mit den Namen dl.html bzw. qd.html und platzieren Sie sie im Standardverzeichnis des WEB-Servers (z. B. C: INETPUBWWWROOT).
Der Inhalt von dl.html ist wie folgt:
<html>
< head >< title >Sende-E-Mail-System</ /title >< /head >
<Körper>
<h1>E-Mail-System senden</h1>
< p > Bitte geben Sie Ihren Benutzernamen und Ihr Passwort ein. < /p >
< form method="post" action="/scripts/xsmd" >
< p >Benutzername: < input type="text" length=10
name="Benutzername" >
Passwort: < input type="passWord"
length=10 name="password" >< /p >
< p >< input type="submit" value="OK" >
< input type="reset" value="Clear" >< /p >
< /form>
< /body >
< /html >
Der Inhalt der qd.html-Datei ist wie folgt:
< html >< head >< title >Füllen Sie das Formular aus</ /title >< /head >
<Körper>
< form method="post" action="feedback" >
< p >Bitte geben Sie die E-Mail-Adresse des Empfängers ein:toaddress:
< Eingabetyp = „Text“ Länge = 20
name=“toaddress“ >< /p >
< p >Bitte füllen Sie den Betreff aus. < Eingabetyp = „Text“
length=20 name="subject" >< /p >
<p>Inhalt:</p>
< p >< input type="textarea" length=40
width=40 name=“body“ >< /p >
< p >< input type="submit" value="OK" >
< input type="reset" value="Clear" >< /p >
< /form>
< /body >
< /html >
Erstellen Sie eine neue ISAPI-basierte WEB-SERVER-Anwendung in DELPHI und fügen Sie nmsmtp1, query1 und pageproducer1 manuell hinzu.
Darunter: Eigenschaft von pageproducer1: htmlfile: c:inetpubwww.rootqd.html. Die Eigenschaft:host von nmsmtp1 (die Adresse des sendenden Mailservers) ist hier smtp.netease.com. Hafen:25. Die globalen Variablen sind: sername:string;flag:boolean;
Fügen Sie ein Aktionselement mit dem Pfad /feedback hinzu. Der Code lautet wie folgt:
Prozedur TWebModule1.WebModule1WebActionItem1
Aktion(Sender: TObject;
Anfrage: TWebRequest; Antwort:
TWebResponse; var Handled: Boolean);
Var Count:integer;
S:string;
Beginnen
Abfrage1.close;
Query1.sql.clear;
S:='select count(username) from
user.db wobei username=“';
S:=s+request.contentfields.values['username']+'"';
S:=s+' und passwort=“';
S:=s+request.contentfields.values['psword']+'"';
Query1.sql.add(S);
Abfrage1.open;
Wenn query1.count=0
then response.content:='< html >< head >< title >
< /title >< body >Der Benutzername und das Passwort sind falsch, bitte geben Sie sie erneut ein.
< /body >< /html >'
Anders
Benutzername:=request.contentfields.values['Benutzername'];
Response.content:=pageproducer1.content;
Ende;
Fügen Sie ein weiteres Aktionselement mit dem Pfad /sendmail hinzu.
Sein Programmcode lautet wie folgt:
Prozedur TWebModule1.WebModule1Web
ActionItem2Action(Sender: TObject;
Anfrage: TWebRequest; Antwort:
TWebResponse; var Handled: Boolean);
Var body:string;
Beginnen
Flag:=true;
body:=request.contentfields.values['body'];
Pageproducer1.htmldoc.clear;
Pageproducer1.htmldoc.add('< html >< body >');
Nmsmtp1.postmessage.clear;
Nmsmtp1.postmessage.fromaddress:=Benutzername+
'@netease.com';
Nmsmtp1.postmessage.from:=Benutzername;
Nmsmtp1.postmessage.body.add(body);
Nmsmtp1.postmessage.toaddress.add
(request.contentfields.values['toaddress']);
Nmsmtp1.postmessage.subject:=
request.contentfields.values['subject'];
Nmsmtp1.connect;
Wenn flag=true, dann beginne Nmsmtp1.sendmail;
nmsmtp1.disconntent;end
pageproducer1.htmldoc.add
('< /body >< /html >');
Response.content:=pageproducer1.content;
Ende;
Die Ereignisse, die nmsmtp1 erhöhen, sind wie folgt:
procedure TWebModule1.NMSMTP1Connect(Sender: TObject);
beginnen
pageproducer1.htmldoc.add
('< p >Bereits mit dem Postausgangsserver verbunden</p>');
Ende;
Prozedur TWebModule1.NMSMTP1Connection
Fehlgeschlagen (Sender: TObject);
beginnen
flag:=false;
pageproducer1.htmldoc.add
('< p >Verbindung fehlgeschlagen< /P >');
Ende;
Prozedur TWebModule1.NMSMTP1ConnectionRequired
(var behandelt: Boolean);
beginnen
pageproducer1.htmldoc.add('< p >Erfordert Verbindung</p>');
Ende;
procedure TWebModule1.NMSMTP1Failure(Sender: TObject);
beginnen
pageproducer1.htmldoc.add('< p >Fehler beim Senden der E-Mail</p>');
flag:=false;
Ende;
Prozedur TWebModule1.NMSMTP1Header
Unvollständig(Var behandelt: Boolean;
hiType: Integer);
beginnen
pageproducer1.htmldoc.add('< p >Kopf ist unvollständig</ /p >');
flag:=false;
Ende;
Prozedur TWebModule1.NMSMTP1InvalidHost
(var behandelt: Boolean);
beginnen
pageproducer1.htmldoc.add('< p >
Die sendende E-Mail-Serveradresse ist ungültig</p>');
flag:=false;
Ende;
Prozedur TWebModule1.NMSMTP1RecipientNot
Gefunden(Empfänger: String);
beginnen
pageproducer1.htmldoc.add
('< p >Die erhaltene E-Mail-Adresse ist falsch</p>');
flag:=false;
Ende;
Prozedur TWebModule1.NMSMTP1Success(
Absender: TObject);
beginnen
pageproducer1.htmldoc.add('< p >
E-Mail erfolgreich gesendet</ /p >');
Ende;
Speichern Sie das Projekt als sendmail.dpr, kompilieren Sie es und legen Sie es im ausführbaren Dateipfad des WEB-Servers ab (z. B. c:intpubscripts). Sie können auf die Benutzereingabe der HTML-Datei dl.htm reagieren und ggf Benutzername und Passwort sind korrekt. Sie können die Seite zum Senden von E-Mails aufrufen. Benutzer können E-Mails senden, nachdem sie die E-Mail-Adresse, den Betreff und den Inhalt eingegeben haben. Dieses Programm hat das Debugging auf NT SERVER bestanden.