Listado de los capítulos

1.- Envío de formularios por mail
Introducción al envío de formularios por mail desde páginas web. Ventajas de enviar los correos a través del servidor. Entrar
2.- Tecnologías para enviar formularios por el servidor
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. Entrar
3.- Envío de formularios por mail usando CGI
El envio de formularios por correo electrónico utilizando la tecnología CGI. Entrar
4.- Enviar un formulario por email con ASP
Creación de un script con un formulario que se envía por correo electrónico desde el servidor utilizando la tecnología ASP. Entrar
5.- Enviar un formulario por mail con PHP
Ejemplo de envío de un formulario por correo electrónico por mediación de la tecnología de servidor PHP. Entrar

 

B.- Envío de formularios por mail

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, 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.

 

2.- Tecnologías para enviar formularios por el servidor

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:
ASP a fondo
PHP a fondo

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.

3.- Envío de formularios por mail usando CGI

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 value=”pepe@pepe.com”>
<input value=”Asunto del mail que se envia”>
<input 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 size=”25″ maxlength=”300″>
          </font></td>
       <td> <font face=”Verdana, Arial, Helvetica, sans-serif” size=”2″>Email:<br>
          <input size=”25″ maxlength=”300″>
          </font></td>
    </tr>
    <tr>
       <td><font size=”2″>Dirección:<br>
          <input size=”30″ maxlength=”500″>
          </font></td>
       <td><font size=”2″>Telefono:<br>
          <input size=”12″ maxlength=”15″>
          </font></td>
    </tr>
    <tr>
       <td colspan=”2″><font face=”Verdana, Arial, Helvetica, sans-serif” size=”2″>Observaciones:<br>
          <textarea cols=”50″ rows=”5″></textarea>
          </font></td>
    </tr>
    <tr>
       <td colspan=”2″>
          <div align=”center”><br>
          <input value=”Enviar”>
       </td>
    </tr>
</table>
</form>

 

4.- Enviar un formulario por email con ASP

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 size=”12″ maxlength=”200″>
<br>
Email: <input size=”12″ maxlength=”200″>
<br>
<input 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.

 

5.- Enviar un formulario por mail con PHP

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 size=16>
<br>
Email: <input size=16>
<br>
Comentarios: <textarea cols=32 rows=6></textarea>
<br>
<input 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>