Habituellement, le CGI de mailto.exe est utilisé pour implémenter WEBMAIL, en écrivant l'instruction "< form action="mailto:email address" method=post >" dans le fichier HTML ou en appelant la fonction API WINDOWS. L'utilisation de l'API WINDOWS et l'écriture de l'instruction "< form action="mailto:email address" method=post >" dans le fichier HTML nécessitent toutes deux que le navigateur de l'utilisateur charge des logiciels tels que EXCHANGE, OutlookEXPRESS ou OUTLOOK, et il existe également certains navigation Le serveur ne prend pas en charge l'instruction MAILTO. L'utilisation de CGI pour implémenter WEBMAIL n'a aucune exigence sur le navigateur de l'utilisateur, mais elle n'est pas efficace. La technologie CGI est progressivement remplacée par la technologie ISAPI/NSAPI. Cet article discutera de la mise en œuvre de WEBMAIL à l'aide de la technologie ISAPI.
Il est très simple de développer des programmes Web Server à l'aide de Delphi 4. Delphi 4 fournit un grand nombre de composants et d'objets pour prendre en charge le développement de programmes Web Server. Voici un exemple d'utilisation de DELPHI pour développer un programme ISAPI WEBMAIL qui répond aux entrées de l'utilisateur. Seuls les utilisateurs enregistrés sur le serveur d'envoi peuvent envoyer des e-mails via le navigateur. Par souci de simplicité, le programme n'assure pas la confidentialité des données transmises.
Tout d'abord, installez le moteur de base de données dbe sur le serveur WEB et définissez l'alias de la base de données : yh, pointant vers un fichier de base de données user.db contenant le nom d'utilisateur et le mot de passe de l'utilisateur. Créez ensuite deux fichiers HTML, nommés respectivement : dl.html, qd.html, et placez-les dans le répertoire par défaut du serveur WEB (par exemple : C:INETPUBWWWROOT).
Le contenu de dl.html est le suivant :
<html>
< head >< title >Envoi du système de messagerie</ /title >< /head >
<corps>
<h1>Système d'envoi de courrier électronique</h1>
< p > Veuillez saisir votre nom d'utilisateur et votre mot de passe. < /p >
< form method="post" action="/scripts/xsmd" >
< p >Nom d'utilisateur : < input type="text" length=10
nom="nom d'utilisateur" >
Mot de passe : < input type="passWord"
longueur=10 nom="mot de passe" >< /p >
< p >< input type="submit" value="OK" >
< input type="reset" value="Effacer" >< /p >
< /formulaire >
< /corps >
< /html >
Le contenu du fichier qd.html est le suivant :
< html >< head >< title >Remplissez le formulaire</ /title >< /head >
<corps>
< form method="post" action="feedback" >
< p >Veuillez saisir l'adresse e-mail de réception :àadresse :
< type d'entrée="texte" longueur=20
nom=”adresseàadresse” >< /p >
< p >Veuillez remplir le sujet. < type d'entrée="texte"
longueur=20 nom="sujet" >< /p >
<p>Contenu :</p>
< p >< input type="textarea" longueur=40
largeur=40 nom=”corps” >< /p >
< p >< input type="submit" value="OK" >
< input type="reset" value="Effacer" >< /p >
< /formulaire >
< /corps >
< /html >
Créez une nouvelle application WEB SERVER basée sur ISAPI dans DELPHI et ajoutez manuellement nmsmtp1, query1 et pageproducer1.
Parmi eux : propriété de pageproducer1 : fichier html : c:inetpubwww.rootqd.html. La propriété : hôte de nmsmtp1 (l'adresse du serveur de messagerie d'envoi) est smtp.netease.com ici. port : 25. Les variables globales sont : sername:string;flag:boolean;
Ajoutez une action avec le chemin /feedback, le code est le suivant :
procédure TWebModule1.WebModule1WebActionItem1
Action (Expéditeur : TObject ;
Demande : TWebRequest ; Réponse :
TWebResponse ; var géré : booléen );
Nombre Var : entier ;
S:chaîne;
Commencer
Requête1.close ;
Requête1.sql.clear ;
S: = 'sélectionnez le nombre (nom d'utilisateur) de
user.db où username=”';
S:=s+request.contentfields.values['nom d'utilisateur']+'"';
S:=s+' et mot de passe=”';
S:=s+request.contentfields.values['psword']+'"';
Requête1.sql.add(S);
Requête1.open ;
Si query1.count=0
puis réponse.content:='< html >< head >< titre >
< /title >< body >Le nom d'utilisateur et le mot de passe sont incorrects, veuillez les saisir à nouveau.
< /body>< /html >'
Autre
Nom d'utilisateur :=request.contentfields.values['nom d'utilisateur'] ;
Réponse.content:=pageproducter1.content;
Fin;
Ajoutez un autre élément d’action avec le chemin /sendmail.
Son code de programme est le suivant :
procédure TWebModule1.WebModule1Web
ActionItem2Action (Expéditeur : TObject ;
Demande : TWebRequest ; Réponse :
TWebResponse ; var géré : booléen );
Corps du Var : chaîne ;
Commencer
Indicateur :=vrai ;
corps:=request.contentfields.values['corps'];
Pageproducter1.htmldoc.clear;
Pageproducter1.htmldoc.add('< html >< body >');
Nmsmtp1.postmessage.clear;
Nmsmtp1.postmessage.fromaddress:=nom d'utilisateur+
'@netease.com';
Nmsmtp1.postmessage.from:=nom d'utilisateur;
Nmsmtp1.postmessage.body.add(corps);
Nmsmtp1.postmessage.toaddress.add
(request.contentfields.values['toaddress']);
Nmsmtp1.postmessage.subject :=
request.contentfields.values['sujet'];
Nmsmtp1.connect;
Si flag=true alors commencez Nmsmtp1.sendmail ;
nmsmtp1.disconntent;fin
pageproducteur1.htmldoc.add
('< /body >< /html >');
réponse.content:=pageproducter1.content;
fin;
Les événements qui augmentent nmsmtp1 sont les suivants :
procédure TWebModule1.NMSMTP1Connect(Expéditeur : TObject) ;
commencer
pageproducteur1.htmldoc.add
("< p >Déjà connecté au serveur de courrier sortant</p>');
fin;
procédure TWebModule1.NMSMTP1Connection
Échec (Expéditeur : TObject );
commencer
drapeau :=faux ;
pageproducteur1.htmldoc.add
("< p >Échec de la connexion< /P >');
fin;
procédure TWebModule1.NMSMTP1ConnectionRequired
(var manipulé : booléen );
commencer
pageproducter1.htmldoc.add('< p >Nécessite une connexion</p>');
fin;
procédure TWebModule1.NMSMTP1Failure(Expéditeur : TObject) ;
commencer
pageproducter1.htmldoc.add('< p >Échec de l'envoi de l'e-mail</p>');
drapeau :=faux ;
fin;
procédure TWebModule1.NMSMTP1Header
Incomplet (var gérée : booléenne ;
hiType : entier );
commencer
pageproducter1.htmldoc.add('< p >la tête est incomplète</ /p >');
drapeau :=faux ;
fin;
procédure TWebModule1.NMSMTP1InvalidHost
(var manipulé : booléen );
commencer
pageproducter1.htmldoc.add('< p >
L'adresse du serveur email d'envoi n'est pas valide</p>');
drapeau :=faux ;
fin;
procédure TWebModule1.NMSMTP1RecipientNot
Trouvé (Destinataire : Chaîne) ;
commencer
pageproducteur1.htmldoc.add
("< p >L'adresse email reçue est incorrecte</p>');
drapeau :=faux ;
fin;
procédure TWebModule1.NMSMTP1Success(
Expéditeur : TObject );
commencer
pageproducter1.htmldoc.add('< p >
Email envoyé avec succès</ /p >');
fin;
Enregistrez le projet sous sendmail.dpr, compilez-le et placez-le dans le chemin du fichier exécutable du serveur WEB (tel que : c:intpubscripts), vous pouvez répondre à la saisie de l'utilisateur du fichier HTML dl.htm, et si l'utilisateur le nom d'utilisateur et le mot de passe sont corrects. Vous pouvez accéder à la page d'envoi d'e-mails. L'utilisateur peut envoyer des e-mails après avoir renseigné l'adresse e-mail, l'objet et le contenu. Ce programme a réussi le débogage sur NT SERVER.