Creación de un script con un formulario que se envía por correo electrónico desde el servidor utilizando la tecnología ASP.
Si deseamos que, al pulsar el botón de envío de un formulario, se manden los datos por email utilizando el servidor y sin estar supeditados a la configuración del cliente para saber si ciertamente ese mensaje se pudo enviar, debemos utilizar alguna tecnología de programación de páginas del lado del servidor. En este artículo vamos a presentar un ejemplo sobre cómo hacer esta tarea con ASP.
ASP (Active Server Pages) es la tecnología de scripting del lado del servidor desarrollada por Microsoft. Con este tipo de programación podemos construir páginas que muestren un formulario y manden un correo electrónico automáticamente con los datos recibidos, una vez enviado.
Podríamos utilizar un esquema de código como el siguiente:
<%
if request.form="" then
'no recibo formulario, entonces lo muestro
%>
<form action="formulario_mail_asp.asp" method="POST">
Nombre: <input type="Text" name="nombre" size="12" maxlength="200">
<br>
Email: <input type="Text" name="email" size="12" maxlength="200">
<br>
<input type="submit" value="Enviar">
</form> <%
else
'si que recibo un formulario, entonces lo trato
'recojo los datos
nombre = request.form("nombre")
email = request.form("email")
'compongo el cuerpo del mensaje
cuerpo = "Formulario recibido" & VBNEWLINE & VBNEWLINE
cuerpo = cuerpo & "Nombre: " & nombre & VBNEWLINE
cuerpo = cuerpo & "Email: " & email
'mando el correo...
'..................
response.write "Gracias por rellenar el formulario. Se ha enviado correctamente." end if %>
En el anterior script utilizamos if (request.form="") para saber si estamos recibiendo o no información de un formulario.
Si no hemos recibido nada (porque en request.form tenemos una cadena vacía) este if saldría por su caso verdadero, en el que tendremos que presentar el formulario en la página.
El caso else, cuando sí que recibíamos un formulario, recogemos sus datos y creamos el cuerpo del mail que enviaremos a la dirección del administrador.
El resto del código, utilizado para definir las propiedades del email y enviarlo, todavía no lo hemos indicado. Antes una aclaración.
ASP no tiene entre las funciones del lenguaje una que sirva para enviar correos electrónicos. Sin embargo, podemos utilizar un componente ActiveX del servidor para realizar esas acciones.
El componente CDONTS (presente en muchas de las instalaciones de IIS) serviría para realizar el envío del mail, pero también existen en el mercado otros componentes de servidor comerciales para realizar esas acciones con mayores funcionalidades. Uno de ellos es AspEmail, que es el que vamos a utilizar en este script, pero no es el único. Hablamos de las distintas opciones en el artículo Enviar mails desde ASP.
El código para enviar un mail podría ser algo como esto:
'creo el objeto correo
set mail = server.createObject("Persits.MailSender")
'configuro el mensaje
'señalo el servidor de salida para enviar el correo
mail.host = "mail.tudominio.com"
'indico la dirección de correo del remitente
mail.from = "loquesea@tudominio.com"
'indico la dirección del destinatario del mensaje
mail.addAddress "loquesea@tudominio.com"
'indico el cuerpo del mensaje
mail.body = cuerpo
'lo envio
'aseguro que no se presenten errores en la página si se producen
On Error Resume Next
mail.send
if Err ><0 then
response.write "Error, no se ha podido completar la operación"
else
response.write "Gracias por rellenar el formulario. Se ha enviado correctamente." end if
Nos podemos guiar por los comentarios para hacernos una idea del funcionamiento de este trozo de código. Básicamente se crea el objeto mail, que contendrá el correo que se va a generar, y se definen sus propiedades como el servidor de correo a utilizar, el destinatario o el asunto. Luego se envía y se realiza una sencilla tarea de detección de errores para saber si se pudo realizar la tarea con éxito o no y mostrar un mensaje adecuado para cada caso.
ASP (Active Server Pages) es la tecnología de scripting del lado del servidor desarrollada por Microsoft. Con este tipo de programación podemos construir páginas que muestren un formulario y manden un correo electrónico automáticamente con los datos recibidos, una vez enviado.
Podríamos utilizar un esquema de código como el siguiente:
<%
if request.form="" then
'no recibo formulario, entonces lo muestro
%>
<form action="formulario_mail_asp.asp" method="POST">
Nombre: <input type="Text" name="nombre" size="12" maxlength="200">
<br>
Email: <input type="Text" name="email" size="12" maxlength="200">
<br>
<input type="submit" value="Enviar">
</form> <%
else
'si que recibo un formulario, entonces lo trato
'recojo los datos
nombre = request.form("nombre")
email = request.form("email")
'compongo el cuerpo del mensaje
cuerpo = "Formulario recibido" & VBNEWLINE & VBNEWLINE
cuerpo = cuerpo & "Nombre: " & nombre & VBNEWLINE
cuerpo = cuerpo & "Email: " & email
'mando el correo...
'..................
response.write "Gracias por rellenar el formulario. Se ha enviado correctamente." end if %>
En el anterior script utilizamos if (request.form="") para saber si estamos recibiendo o no información de un formulario.
Si no hemos recibido nada (porque en request.form tenemos una cadena vacía) este if saldría por su caso verdadero, en el que tendremos que presentar el formulario en la página.
El caso else, cuando sí que recibíamos un formulario, recogemos sus datos y creamos el cuerpo del mail que enviaremos a la dirección del administrador.
El resto del código, utilizado para definir las propiedades del email y enviarlo, todavía no lo hemos indicado. Antes una aclaración.
ASP no tiene entre las funciones del lenguaje una que sirva para enviar correos electrónicos. Sin embargo, podemos utilizar un componente ActiveX del servidor para realizar esas acciones.
El componente CDONTS (presente en muchas de las instalaciones de IIS) serviría para realizar el envío del mail, pero también existen en el mercado otros componentes de servidor comerciales para realizar esas acciones con mayores funcionalidades. Uno de ellos es AspEmail, que es el que vamos a utilizar en este script, pero no es el único. Hablamos de las distintas opciones en el artículo Enviar mails desde ASP.
Nota: Insistimos en que el siguiente código, que hace la acción de enviar un email, no funcionará si no tenemos el componente ASP AspEmail instalado correctamente en nuestro servidor. Además, deberíamos consultar la documentación del componente, para comprobar que en la versión que descarguemos sigue funcionando todo como aparece a continuación. |
El código para enviar un mail podría ser algo como esto:
'creo el objeto correo
set mail = server.createObject("Persits.MailSender")
'configuro el mensaje
'señalo el servidor de salida para enviar el correo
mail.host = "mail.tudominio.com"
'indico la dirección de correo del remitente
mail.from = "loquesea@tudominio.com"
'indico la dirección del destinatario del mensaje
mail.addAddress "loquesea@tudominio.com"
'indico el cuerpo del mensaje
mail.body = cuerpo
'lo envio
'aseguro que no se presenten errores en la página si se producen
On Error Resume Next
mail.send
if Err ><0 then
response.write "Error, no se ha podido completar la operación"
else
response.write "Gracias por rellenar el formulario. Se ha enviado correctamente." end if
Nos podemos guiar por los comentarios para hacernos una idea del funcionamiento de este trozo de código. Básicamente se crea el objeto mail, que contendrá el correo que se va a generar, y se definen sus propiedades como el servidor de correo a utilizar, el destinatario o el asunto. Luego se envía y se realiza una sencilla tarea de detección de errores para saber si se pudo realizar la tarea con éxito o no y mostrar un mensaje adecuado para cada caso.
Nota: no se pretenden explicar los pormenores de este Control Activex del servidor, ya que hay una excelente documentación y ejemplos en la página web de la empresa que lo ha desarrollado. En caso de que se desee aprender algo más, por favor, dirigiros a la página www.aspemail.com o la del componente del que dispongáis.que dispongáis. |
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...