Por lo general, el CGI de mailto.exe se utiliza para implementar WEBMAIL, escribiendo la declaración "< form action="mailto:email Address" = post >" en el archivo HTML o llamando a la función API de WINDOWS. El uso de la API de WINDOWS y la escritura de la declaración "< form action="mailto:email address" = publicación >" en el archivo HTML requieren que el navegador del usuario cargue software como EXCHANGE, OutlookEXPRESS o OUTLOOK, y también hay algunos Navegando El servidor no soporta la declaración MAILTO. El uso de CGI para implementar WEBMAIL no requiere requisitos en el navegador del usuario, pero no es eficiente. La tecnología CGI está siendo reemplazada gradualmente por la tecnología ISAPI/NSAPI. Este artículo discutirá la implementación de WEBMAIL utilizando la tecnología ISAPI.
Es muy sencillo desarrollar programas de servidor web utilizando Delphi 4. Delphi 4 proporciona una gran cantidad de componentes y objetos para respaldar el desarrollo de programas de servidor web. El siguiente es un ejemplo de cómo utilizar DELPHI para desarrollar un programa ISAPI WEBMAIL que responda a la entrada del usuario. Sólo los usuarios registrados en el servidor de envío pueden enviar correos electrónicos a través del navegador. Por motivos de simplicidad, el programa no garantiza la confidencialidad de los datos transmitidos.
Primero, instale el motor de base de datos dbe en el servidor WEB y establezca el alias de la base de datos: yh, apuntando a un archivo de base de datos user.db que contiene el nombre de usuario y la contraseña del usuario. Luego cree dos archivos HTML, llamados: dl.html, qd.html respectivamente, y colóquelos en el directorio predeterminado del servidor WEB (por ejemplo: C: INETPUBWWWROOT).
El contenido de dl.html es el siguiente:
<html>
< head >< title >Sistema de envío de correo electrónico</ /title >< /head >
<cuerpo>
<h1>Sistema de envío de correo electrónico</h1>
< p > Por favor ingrese su nombre de usuario y contraseña. < /p >
< método de formulario="publicar" acción="/scripts/xsmd" >
< p >Nombre de usuario: < tipo de entrada="texto" longitud=10
nombre="nombre de usuario" >
Contraseña: < tipo de entrada="contraseña"
longitud=10 nombre="contraseña" >< /p >
< p >< tipo de entrada="enviar" valor="Aceptar" >
< tipo de entrada="reset" valor="Borrar" >< /p >
< /formulario >
< /cuerpo >
< /html >
El contenido del archivo qd.html es el siguiente:
< html >< head >< title >Rellena el formulario</ /title >< /head >
<cuerpo>
< método de formulario = "publicar" acción = "comentarios" >
< p >Ingrese la dirección de correo electrónico de recepción:toaddress:
<tipo de entrada="texto" longitud=20
nombre=”dirección” >< /p >
< p >Por favor complete el asunto. < tipo de entrada="texto"
longitud=20 nombre="asunto" >< /p >
<p>Contenido:</p>
< p >< tipo de entrada="área de texto" longitud=40
ancho=40 nombre=”cuerpo” >< /p >
< p >< tipo de entrada="enviar" valor="Aceptar" >
< tipo de entrada="reset" valor="Borrar" >< /p >
< /formulario >
< /cuerpo >
< /html >
Cree una nueva aplicación de SERVIDOR WEB basada en ISAPI en DELPHI y agregue manualmente nmsmtp1, query1 y pageproducer1.
Entre ellos: propiedad de pageproducer1: htmlfile: c:inetpubwww.rootqd.html. La propiedad: host de nmsmtp1 (la dirección del servidor de correo de envío) es smtp.netease.com aquí. puerto: 25. Las variables globales son: sername:string;flag:boolean;
Agregue un elemento de acción con la ruta /comentarios, el código es el siguiente:
procedimiento TWebModule1.WebModule1WebActionItem1
Acción(Remitente: TObject;
Solicitud: TWebRequest; Respuesta:
TWebResponse; var manejado: booleano);
Recuento de var: entero;
S:cadena;
Comenzar
Consulta1.cerrar;
Consulta1.sql.clear;
S:='seleccione recuento (nombre de usuario) de
usuario.db donde nombre de usuario =”';
S:=s+request.contentfields.values['nombre de usuario']+'"';
S:=s+' y contraseña=”';
S:=s+request.contentfields.values['psword']+'"';
Consulta1.sql.add(S);
Consulta1.abierta;
Si consulta1.count=0
luego respuesta.content:='< html >< encabezado >< título >
< /title >< body >El nombre de usuario y la contraseña son incorrectos, vuelva a ingresarlos.
</cuerpo>< /html >'
Demás
Nombre de usuario:=request.contentfields.values['nombre de usuario'];
Respuesta.content:=pageproducer1.content;
Fin;
Agregue otro elemento de acción con la ruta /sendmail.
Su código de programa es el siguiente:
procedimiento TWebModule1.WebModule1Web
ActionItem2Action(Remitente: TObject;
Solicitud: TWebRequest; Respuesta:
TWebResponse; var manejado: booleano);
Cuerpo var:cadena;
Comenzar
Bandera:=verdadero;
cuerpo:=request.contentfields.values['cuerpo'];
Pageproducer1.htmldoc.clear;
Pageproducer1.htmldoc.add('< html >< cuerpo >');
Nmsmtp1.postmessage.clear;
Nmsmtp1.postmessage.fromaddress:=nombre de usuario+
'@netease.com';
Nmsmtp1.postmessage.from:=nombre de usuario;
Nmsmtp1.postmessage.body.add(cuerpo);
Nmsmtp1.postmessage.toaddress.add
(request.contentfields.values['toaddress']);
Nmsmtp1.postmessage.asunto:=
request.contentfields.values['asunto'];
Nmsmtp1.conectar;
Si flag=true entonces comience Nmsmtp1.sendmail;
nmsmtp1.descontento;fin
productordepágina1.htmldoc.add
('< /cuerpo >< /html >');
respuesta.content:=pageproducer1.content;
fin;
Los eventos que aumentan nmsmtp1 son los siguientes:
procedimiento TWebModule1.NMSMTP1Connect(Remitente: TObject);
comenzar
productordepágina1.htmldoc.add
('< p >Ya conectado al servidor de correo saliente</p>');
fin;
procedimiento TWebModule1.NMSMTP1Conexión
Error (Remitente: TObject);
comenzar
bandera:=falso;
productordepágina1.htmldoc.add
('< p >Error de conexión< /P >');
fin;
procedimiento TWebModule1.NMSMTP1ConnectionRequired
(var manejado: booleano);
comenzar
pageproducer1.htmldoc.add('< p >Requiere conexión</p>');
fin;
procedimiento TWebModule1.NMSMTP1Failure (Remitente: TObject);
comenzar
pageproducer1.htmldoc.add('< p >Error al enviar el correo electrónico</p>');
bandera:=falso;
fin;
procedimiento TWebModule1.NMSMTP1Header
Incompleto (var manejada: booleana;
hiType: Entero);
comenzar
pageproducer1.htmldoc.add('< p >el encabezado está incompleto</ /p >');
bandera:=falso;
fin;
procedimiento TWebModule1.NMSMTP1InvalidHost
(var manejado: booleano);
comenzar
pageproducer1.htmldoc.add('< p >
La dirección del servidor de correo electrónico de envío no es válida</p>');
bandera:=falso;
fin;
procedimiento TWebModule1.NMSMTP1RecipientNot
Encontrado (Destinatario: Cadena);
comenzar
productordepágina1.htmldoc.add
('< p >La dirección de correo electrónico recibida es incorrecta</p>');
bandera:=falso;
fin;
procedimiento TWebModule1.NMSMTP1Éxito(
Remitente: TObject);
comenzar
pageproducer1.htmldoc.add('< p >
Correo electrónico enviado correctamente</ /p >');
fin;
Guarde el proyecto como sendmail.dpr, compílelo y colóquelo en la ruta del archivo ejecutable del servidor WEB (como: c: intpubscripts), puede responder a la entrada del usuario del archivo HTML dl.htm, y si el usuario El nombre de usuario y la contraseña son correctos. Puede ingresar a la página para enviar correos electrónicos. El usuario puede enviar correos electrónicos después de completar la dirección de correo electrónico, el asunto y el contenido. Este programa pasó la depuración en NT SERVER.