|
Listado de los capítulos |
|
|
|
|
|
|
|
|
|
|
Una de las funcionalidades importantes que tiene que implementar una página bien acabada es el contacto con el administrador del sitio, de modo que los visitantes puedan enviar sus comentarios, ruegos o preguntas. Una página que no ofrece al visitante una o varias formas de contacto con los administradores es una página incompleta. Si se trata de una página que trate de vender algo, además está destinada al fracaso. Da muy mala imagen que no se pueda ponerse en contacto con los administradores, si desde donde estamos tratando de contactar no cuenta con un servicio de correo tipo cliente como: MS Outlook u otro debidamente configurados.
Ventajas de
enviar los correos a través del servidor de Internet.
Una de las funcionalidades importantes que tiene que implementar una página
bien acabada es el contacto con el administrador del sitio, de modo que los
visitantes puedan enviar sus comentarios, ruegos o preguntas. Una página que no
ofrece al visitante una o varias formas de contacto con los administradores es
una página incompleta. Si se trata de una página que trate de vender algo,
además está destinada al fracaso. Da muy mala imagen que no se pueda ponerse en
contacto con los administradores.
|
Referencia: Se explica con todo detalle la creación de formularios en HTML en nuestro Manual de HTML. Incluimos explicaciones sobre cómo construir un formulario para enviarlo por email y sobre los distintos tipos de campos que podemos colocarle. Si deseamos saber cómo crear la etiqueta <FORM> para enviar un formulario por correo es interesante la lectura del artículo: http://www.desarrolloweb.com/articulos/647.php Si deseamos ver un formulario ya listo para enviarse por correo, sin incurrir en demasiadas explicaciones, sería interesante el artículo http://www.desarrolloweb.com/articulos/5.php |
Existen muchas opciones para implementar un sistema donde los usuarios y el
administrador puedan intercambiar mensajes. En este sentido, ya ofrecimos en
DesarrolloWeb un artículo que comentaba algunos de ellos: Contacto con el navegante,
donde ofrecimos varias ideas muy simples de implementar en páginas sin muchos
recursos técnicos. Ahora vamos a ampliar esta información para usuarios que
deseen profundizar en este asunto y mejorar el sistema de envío de sus
formularios.
Uno de los métodos de contacto con el navegante, tal vez el más habitual, se
trata de crear un formulario que el visitante puede rellenar con su información
personal y los comentarios al administrador y posteriormente enviar por correo
electrónico. En el artículo de Contacto con el navegante
explicamos la manera de construir dicho formulario y configurarlo para el envío
de su contenido en un correo electrónico. El envío del correo con el formulario
se efectuaba a través del programa de correo que tuviera instalado el visitante
en su ordenador, por ejemplo Outlook Express. El problema en este caso es que,
si el ordenador del usuario no tiene programa de correo o éste se encuentra mal
configurado, el formulario no se podrá enviar.
Otros inconvenientes de mandar el formulario utilizando el cliente de correo
electrónico, consisten en que no se puede ofrecer una página que confirme el
envío del correo y agradezca a los visitantes el tiempo utilizado en rellenar
el formulario. Todo esto resulta poco interesante, molesto y engorroso.
En este artículo vamos a relatar, más concretamente, las distintas opciones de
implementar un formulario que sea enviado automáticamente por el servidor de la
página después de su rellenado.
Siempre que sea posible, hay que utilizar el servidor donde está alojada la
página para mandar el correo de los formularios. Comentamos varias
alternativas.
Siempre que sea posible, hay que utilizar el servidor donde está alojada la
página para mandar el correo de los formularios. El servidor deberá permitir el
envío de correos y estar bien configurado para ello.
Comprobando esto, estaremos seguros que los correos se podrán enviar sin
problemas para todos los visitantes, ya que la información no se manda a través
del ordenador del usuario -que no sabíamos si se encontraba bien configurado-
sino a través del servidor -que hemos comprobado convenientemente-.
Distintas tecnologías
El envío de correos por el servidor se tiene que realizar mediante programación en el
servidor. Este tipo de programación es aquel en el que el procesamiento se
realiza en el servidor y el recurso disponible para realizar acciones es el
propio servidor.
|
Referencia: El que no sepa qué tipo de programación es la del servidor y desee aclarar ese concepto, debería leerse el manual de Páginas dinámicas o el de Introducción a los lenguajes del web. |
En este artículo vamos a señalar tres tecnologías con las que implementar el
envío de correos y alguna que otra indicación sobre cómo realizarlo. Las tres
tecnologías son CGI, ASP y PHP. Según nuestro caso deberemos elegir una de
ellas, la que más nos convenga, o bien, la que tengamos a nuestra disposición
en el lugar de alojamiento de nuestras páginas.
Si estamos trabajando con nuestro propio servidor no será dificil saber cuál de
estas tecnologías tenemos disponible, porque seguramente ya estemos utilizando
alguna de ellas. Por ejemplo, si hemos instalado Personal Web Server o
IIS,
tendremos disponible la programación en ASP. Si
tenemos un Linux
con Apache
podríamos utilizar PHP o CGI.
|
Referencia: Todo lo necesario
para empezar a programar en ASP y PHP lo podemos encontrar en nuestras
secciones: |
Si tenemos la página colgada de un proveedor de hosting deberíamos preguntar al
servicio técnico del proveedor cuál de estas opciones está disponible para
realizar el envío de formularios por el servidor. La mayoría de los proveedores
tienen ya instalados los recursos con los que realizar esta tarea, ya que es
una de las que necesitan los desarrolladores más habitualmente. En algunos
casos os darán varias opciones e incluso tendrán a vuestra disposición
tutoriales donde explican el uso de las herramientas disponibles.
También podríamos hacer este ejemplo con programación en Java
-Servlets o Java
Server Pages- o con otros lenguajes como Cold Fusion. Sin embargo, en este
artículo vamos a centrarnos en las tecnologías más habituales, o más populares,
en el desarrollo de webs.
El envio de formularios por correo electrónico utilizando la tecnología CGI.
El método de envío más sencillo es a través de un programa CGI. CGI
es la tecnología para programación del servidor más antigua, tal vez un poco
obsoleta en cuanto a metodología puesto que no ha evolucionado mucho en los
últimos años.
También
resulta un poco más complicado de aprender que las otras opciones señaladas en
este artículo, como ASP o PHP. Por todo ello, empezar desde cero a crear un
sistema CGI resulta, en nuestra opinión, desaconsejado. En lugar de construir
nuestro propio CGI nos parece más interesante utilizar alguno de los ya
creados.
CGI FormMail
Es uno de los programas CGI que se puede utilizar para el envío de formularios.
Su dirección www.scriptarchive.com/formmail.html permite la descarga de
los archivos y documentación para configurarlo y crear los formularios que
utilicen el CGI para enviarse por correo.
Otros sitios con programas CGI
Existen sitios donde podemos encontrar un directorio de programas CGI
clasificados por categorías. En nuestro caso podríamos echar un vistazo a la
sección de Formularios o Envío de correo para encontrar otras opciones y
examinar la oferta disponible para realizar estas tareas.
Podemos acceder a nuestro directorio
de recursos para CGI, donde podremos encontrar algunos enlaces
interesantes.
Es importante señalar que, si estamos alojando nuestras páginas en algún
proveedor de alojamiento, éstos seguramente tengan instalado y configurado
algún programa de envío de formularios, por lo que lo mejor sería preguntar a
los técnicos de nuestro servicio de hosting cuál es y la manera de funcionar
que tiente. Generalmente todos los proveedores de pago tienen algún tipo de CGI
preinstalado y, aunque algunos alojadores gratuitos también disponen de alguno,
no les podemos exigir que así sea.
Ejemplo de código de utilización de FormMail
No pretendemos explicar el manejo de un CGI para enviar correos, puesto que lo mejor sería que aprendiésemos a utilizar el CGI que tengamos disponible en cada caso en nuestro alojamiento.
De todos modos, incluimos aquí un código de un formulario que se enviaría por email utilizando el CGI FormMail. Podemos ver como el atributo action del formulario está dirigido hacia el CGI que se encargará de enviarlo por mail. Asimismo, podemos ver una serie de campos hidden que tienen como objetivo configurar el correo a enviar y señalar la dirección a la que redirigir el navegador después de haber enviado el correo, que simplemente tendría un texto dando las gracias al visitante.
<FORM
ACTION="http://cgi.dominioxyz.com/FormMail.pl" METHOD="POST">
<input type=hidden name="recipient"
value="pepe@pepe.com">
<input type=hidden name="subject"
value="Asunto del mail que se envia">
<input type=hidden name="redirect"
value="http://www.dominioxyz.com/gracias.html">
<table border="0" cellspacing="2"
cellpadding="2">
<tr>
<td><font
face="Verdana, Arial, Helvetica, sans-serif"
size="2">Nombre:<br>
<input type="text" name="nombre" size="25"
maxlength="300">
</font></td>
<td> <font
face="Verdana, Arial, Helvetica, sans-serif"
size="2">Email:<br>
<input type="text" name="email" size="25"
maxlength="300">
</font></td>
</tr>
<tr>
<td><font
size="2">Dirección:<br>
<input type="text" name="direccion" size="30"
maxlength="500">
</font></td>
<td><font
size="2">Telefono:<br>
<input type="text" name="telefono" size="12"
maxlength="15">
</font></td>
</tr>
<tr>
<td
colspan="2"><font face="Verdana, Arial, Helvetica,
sans-serif" size="2">Observaciones:<br>
<textarea name="observaciones" cols="50"
rows="5"></textarea>
</font></td>
</tr>
<tr>
<td
colspan="2">
<div align="center"><br>
<input type="submit" value="Enviar">
</td>
</tr>
</table>
</form>
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.
|
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. |
Ejemplo de envío de un formulario por correo electrónico por mediación de la
tecnología de servidor PHP.
El método para enviar un formulario con PHP resulta muy similar al utilizado en
ASP. Varía tan sólo la sintaxis utilizada y las líneas de código que
realizan el envío del correo electrónico.
Para empezar, sería muy útil que aprendamos a enviar
correos electrónicos con PHP, para lo que tenemos un artículo en
DesarrolloWeb.
Esquema de funcionamiento
En este caso nos vamos a apoyar en la variable $HTTP_POST_VARS, que debería
contener el formulario, para saber si hemos recibido o no datos desde un
formulario. Dicha variable la utilizamos en un enunciado if (!
$HTTP_POST_VARS), que si pasa por el caso positivo -no había nada en
$HTTP_POST_VARS- significa que no se ha recibido nada desde un formulario. En
ese caso, muestro el formulario de contacto.
En caso contrario -sí que había algo en $HTTP_POST_VARS- quiere decir que
estamos recibiendo datos por un formulario y en ese caso, recogemos los datos y
componemos el cuerpo del mensaje.
Veamos el código de la página para crear el formulario, recibirlo y componer el
cuerpo del mensaje que se va a enviar. En el mismo código podremos encontrar
también la llamada a la función que envía el correo.
<!DOCTYPE HTML
PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Mándanos tus
comentarios</title>
</head>
<body bgcolor="#cccc66"
text="#003300" link="#006060" vlink="#006060">
<?
if (!$HTTP_POST_VARS){
?>
<form action="envia_form_php.php"
method=post>
Nombre: <input type=text name="nombre"
size=16>
<br>
Email: <input type=text name=email size=16>
<br>
Comentarios: <textarea name=coment cols=32
rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>
<?
}else{
//Estoy recibiendo el formulario,
compongo el cuerpo
$cuerpo = "Formulario
enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"]
. "\n";
$cuerpo .= "Email: " .
$HTTP_POST_VARS["email"] . "\n";
$cuerpo .= "Comentarios: " .
$HTTP_POST_VARS["coment"] . "\n";
//mando el correo...
mail("admin@tudominio.com","Formulario recibido",$cuerpo);
//doy las gracias por el envío
echo "Gracias por rellenar el
formulario. Se ha enviado correctamente.";
}
?>
</body>
</html>