Este documento presenta un tutorial sobre cómo enviar correos electrónicos desde páginas web utilizando PHP. Explica conceptos básicos de PHP y cómo mezclar código HTML y PHP. Luego, muestra cómo crear un formulario, procesar los resultados e implementar diferentes opciones como mostrar los resultados, enviarlos por correo o ambas.
1. electrónico
contadorescontadoresyy
CorreoCorreo
u s e r s . t e c t i m e s . c o m 59
DevelopersDEVELOPERS
68
60
electrónico
64
Cómo enviar e-mails con PHP
¡La cara opuesta de ASP! Aprendé a programar en este
nuevo lenguaje y a construir aplicaciones para tu sitio web.
Por Martín Ramos Monso
E-mails desde la Web con ASP
Como si fuera poco, además de enseñarte aplicaciones
con PHP, te mostramos cómo hacer lo mismo con ASP.
Por Marcelo Ruiz
Un contador en Perl
Continuamos con la nota del número anterior y damos
los últimos retoques a nuestro contador de visitas.
Por Martín Scandroli
Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 59
2. DevelopersDEVELOPERS
Programando en PHP
En la actualidad, no basta sólo con tener una
página web; tampoco sirve, exclusivamente,
que ésta sea sólo “linda”. La gente está pi-
diendo más interactividad, más dinamismo y velocidad;
por lo cual es importante llevar nuestros sitios a la dimen-
sión dinámica, con el fin de aumentar tanto su tráfico de
visitantes como su utilidad.
La forma de interacción más conocida y más sencilla es un
Formulario, cualquiera sea el tipo, en donde básicamente
el usuario completará los datos que le solicitemos para lue-
go enviárnoslo y que nosotros lo procesemos. El uso de es-
te formulario puede ser tan atractivo como diverso. Con él
podremos recabar datos sobre nuestros visitantes, subir ar-
chivos a la Web (por ejemplo, banners publicitarios), reali-
zar encuestas interactivas y muchas cosas más. En síntesis:
el límite sólo es nuestra imaginación.
Una excelente herramienta para desarrollar esto y potenciar
nuestro sitio con muchísimas funciones es el lenguaje PHP,
con el cual dejamos de lado la dimensión estática de nues-
tro sitio web para pasar a realizar programas para la Red.
PHP (Hypertext Preprocessor) es un lenguaje de programa-
ción que interpreta los comandos en tiempo real (no com-
pila), ejecuta los procesos del lado del servidor (no del la-
do del cliente, como JavaScript) y va embebido con el có-
digo HTML. Además, posee otra ventaja: es gratis.
En esta nota, veremos el procesamiento de los resultados
de formularios: por ejemplo, su envío por e-mail.
A trabajar con PHP
PHP funciona mezclando el código HTML con el de PHP
en una misma página web. La inserción se realiza de mo-
do muy similar a como lo hace JavaScript: insertando el
código entre los tags <? y ?>.
Un ejemplo claro de esto sería, para el caso de una pági-
na en HTML puro:
<html>
<head>
<title>Acá ponemos el título de la página</title>
</head>
<body>
<p>Ésta es una página en HTML Puro</p>
</body>
</html>
Cómo enviar e-mails con PHP
Programando en PHPMartín Ramos Monso
mramos@infcomercial.com
u s e r s . t e c t i m e s . c o m60
PHP es un lenguaje nuevo y muy
poderoso que nos ofrece un gran
número de posibilidades para agregar
interactividad entre nuestra página y
los usuarios. En esta ocasión, Martín
Ramos Monso, un experto en PHP,
nos explica los conceptos básicos de
este lenguaje y nos enseña cómo
enviar e-mails desde páginas web.
Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 60
3. Para saber más
La página principal de estadísticas de CACE muestra un
u s e r s . t e c t i m e s . c o m 61
Página en PHP
En este ejemplo de página haremos una que nos imprima la
suma de dos números. Las variables que guardarán esos núme-
ros serán num_1 y num_2, y la variable que guardará el total
de la suma será “resultado”.
<html>
<head>
<title>Acá ponemos el título de la página</title>
</head>
<body>
<p>Ésta es una página en HTML y PHP</p>
<?
// con el signo // indico los comentarios
// Inicializo dos variables (num_1 y num_2)
$num_1 = 10;
$num_2 = 5;
// calculo la suma de ambos números y los guardo en
la variable resultado
$resultado = $num_1 + $num_2;
// Imprimo el resultado sin formato
echo $resultado;
// Imprimo el resultado con formato html
printf(“<p><font face=Arial size=2><u>El resultado
es</u>: <b>%s</b></font></p>”, $resultado);
?>
</body>
</html>
Notemos que el código PHP va embebido en el HTML; por lo
tanto, es muy sencillo en principio, pero se va complicando en
la medida en que uno va realizando páginas más complejas;
por ejemplo, con muchas tablas, etc. En estos casos, una vez
que ya tenemos definida cuál es la función del programa y qué
resultados va a mostrar, es recomendable proceder de la si-
guiente forma:
1) Armamos el HTML general, con datos ficticios y el forma-
to que quedará finalmente a la vista del usuario.
2) Reemplazamos los lugares donde deben ir los datos váli-
dos por las variables que contienen dichos datos, quitando los
ficticios.
Ahora que ya hemos visto las diferencias básicas, armaremos
un formulario y comenzaremos a ver el manejo de datos.
Sobre los formularios
En una primera instancia, sabemos que tenemos un formula-
rio donde introducimos datos y, luego de presionar un botón
de enviar, lo que hacemos es llamar al programa que maneja-
rá los resultados de dicho formulario. Ese tipo de programas
puede ser en PHP, PERL, ASP, etc.
Este programa recibe como parámetros los campos del formu-
lario (los visibles y los no visibles) y se ejecuta produciendo
el resultado, para lo cual fue creado. Por ejemplo, mostrar los
Figura 1. El sitio oficial de PHP en la Web. Desde aquí
podremos bajar su última versión (www.php.net).
Figura 2. Así se verá nuestro formulario de ejemplo a
medida que vayamos introduciendo los datos.
Figura 4. El mail que le enviaremos a los usuarios que
completen el formulario será similar a éste.
Figura 3. Ésta es la vista de nuestro programa luego
de que el usuario completó el formulario y presionó
[Enviar].
Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 61
4. DevelopersDEVELOPERSDEVELOPERS
u s e r s . t e c t i m e s . c o m62
DevelopersDEVELOPERS
<html>
<head>
<title>PHP</title>
</head>
<body>
<?if ($tipo != “enviar”){?>
<p>Por favor complete el siguiente formulario</p>
<form method=”POST” action=”formulario.php”>
<p>Nombre <input type=”text” name=”nombre”></p>
<p>Direccion <input type=”text”
name=”direccion”></p>
<p>Telefono <input type=”text”
name=”telefono”></p>
<p>E-mail <input type=”text” name=”e_mail”></p>
<p>Que hacemos <select size=”1” name=”hacemos”>
<option value=”resultados”>Mostramos los
resultados</option>
<option value=”e_mail”>Enviamos los resultados
por e-mail</option>
<option value=”ambas”>Ambas - Mostramos los
resultados y mandamos el mail</option>
</select></p>
<p><input type=”submit” value=”Enviar”
name=”B1”><input type=”reset” value=”Restablecer”
name=”B2”></p>
<input type=”hidden” name=”tipo” value=”enviar”>
</form>
<?
}
else{
// Supuestamente tengo los campos completos
// Aquí debo elegir qué hacer con los resultados
if ($hacemos == “resultados”){
?>
<p>Hemos recibido los siguientes datos</p>
<p><b><u>Nombre</u></b>: <? echo $nombre; ?></p>
<p><b><u>Dirección</u></b>: <?echo $direccion;
?></p>
<p><b><u>Teléfono</u></b>: <? echo $telefono; ?></p>
<p><b><u>E-mail</u></b>: <? echo $e_mail; ?></p>
Listado #1
resultados y enviarlos por e-mail, o guardarlos en una base de
datos, etc.
Los métodos POST y GET sirven para especificar cómo serán
enviados los parámetros al programa. El autor del formulario
selecciona el método más apropiado:
<FORM METHOD= POST ACTION = “ejemplo.php”>
<FORM METHOD= GET ACTION = “ejemplo.php”>
Armando el formulario
Comenzaremos armando un formulario básico que sirva para
introducir el nombre, la dirección y el teléfono.
Notemos que donde dice action=”......” debe ir la dirección
de nuestro programa para procesar dicho formulario. Por ejem-
plo, programa.php:
<form method=”POST” action=”http://wwwww...”>
<?
}if ($hacemos == “e_mail”){
// Para enviar un mensaje utilizamos la función
mail
$contenido = “Gracias por darse de altann”;
$contenido .= “Nombre: “ . $nombre . “n”;
$contenido .= “Direccion: “ . $direccion . “n”;
$contenido .= “Telefono: “ . $telefono . “n”;
$contenido .= “E-mail: “ . $e_mail . “n”;
$contenido .= “nnMartin”;
mail ($e_mail, “Confirmacion”, $contenido, “From:
Martin <mramos@infocomercial.com>”);
echo “El mensaje ya ha sido enviado”;}
if ($hacemos == “ambas”){
// Primero muestro los resultados
?>
<p>Hemos recibido los siguientes datos</p>
<p><b><u>Nombre</u></b>: <? echo $nombre; ?></p>
<p><b><u>Dirección</u></b>: <? echo $direccion;
?></p>
<p><b><u>Telefono</u></b>: <? echo $telefono;
?></p>
<p><b><u>E-mail</u></b>: <? echo $e_mail; ?></p>
<?
// Envio los resultados por e-mail
$contenido = “Gracias por dase de altann”;
$contenido .= “Nombre: “ . $nombre . “n”;
$contenido .= “Direccion: “ . $direccion . “n”;
$contenido .= “Telefono: “ . $telefono . “n”;
$contenido .= “E-mail: “ . $e_mail . “n”;
$contenido .= “nnMartin”;
mail ($e_mail, “Confirmacion”, $contenido, “From:
Martin <mramos@infocomercial.com>”);
echo “El mensaje ya ha sido enviado”;
}
}
?>
</body>
</html>
Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 62
5. u s e r s . t e c t i m e s . c o m 63
<p>Nombre y Apellido <input type=”text”
name=”nombre” size=”20”></p>
<p>Direccion <input type=”text” name=”direccion”
size=”20”></p>
<p>Telefono <input type=”text” name=”telefono”
size=”20”></p>
<p><input type=”submit” value=”Enviar”
name=”B1”><input type=”reset” value=”Restablecer”
name=”B2”></p>
<input type=”hidden” name=”tipo” value=”enviar”>
</form>
En este ejemplo hemos introducido un campo oculto, llama-
do tipo, y cuyo valor es enviar.
Generalmente, la mayoría de los formularios constan de dos
páginas: la primera es la página principal donde aparece el
formulario, y la segunda, la página o programa que procesa
sus resultados.
En nuestro ejemplo próximo, realizaremos un programa que
se ocupará de ambas funciones en una única página. El obje-
tivo es procesar los datos antes mencionados (nombre, direc-
ción, teléfono y mail) y sobre estos datos producir las siguien-
tes acciones, según la elección del usuario.
Las acciones posibles son:
• Opción 1: Mostrar los resultados.
• Opción 2: Enviar los resultados por e-mail.
• Opción 3: Realizar ambas cosas (mostrar los resultados y
enviarlos por correo electrónico).
Analizando el código
En nuestro código vemos dos secciones bien definidas se-
paradas por un condicional if. El if pregunta por si el pará-
metro tipo tiene un valor distinto (!=) de enviar. Si tiene un
valor diferente, significa que entramos en el programa por
primera vez, con lo cual lo primero que deberá mostrar es el
formulario.
Cuando el usuario complete dicho formulario y presione el
botón [Enviar], junto con los datos, enviará el parámetro
oculto que mencionamos anteriormente, llamado tipo, y el va-
lor que enviará es enviar para dicha variable.
Cuando se vuelva a ejecutar el programa “formulario.php”,
recorrerá el if principal, y entrará en el segundo segmento de
código (por el else). Ahora, la variable “tiene” como valor el
string enviar.
En este segmento de código, el programa nos vuelve a pre-
guntar, con distintos condicionales if, qué operación quere-
mos realizar (mostrar los resultados, enviarlos, etc.). Tendre-
mos un if por cada tipo de operación.
El tipo de operación es el que el usuario seleccionó previa-
mente en el formulario (en la lista desplegable), cuyo nombre
de variable es “hacemos”.
Si la operación elegida es Mostrar los resultados, entrará en
el if donde la variable “hacemos” tenga como valor el string
resultados. Si es otra, irá recorriendo los distintos if hasta en-
contrar la opción correspondiente a la selección del usuario.
Analicemos cada una de las opciones posibles:
• Opción 1: Mostrar resultados. En esta opción, simplemen-
te imprimimos, mediante el comando echo, printf o similar,
los resultados obtenidos del formulario.
• Opción 2: Enviar los resultados por e-mail. En este caso,
utilizamos la función mail de PHP, para enviar los resultados
por e-mail al destinatario. La función mail tiene la siguiente
sintaxis:
mail (para, tema, contenido, headers);
Cualquier mensaje que nosotros deseemos enviar deberá con-
tener las siguientes partes:
• Destinatario: la persona que recibirá dicho mensaje
• Tema: título del mensaje
• Contenido: el texto principal del mensaje
• Respuesta: dirección a la cual se enviarán las respuestas
a dicho mensaje
La dirección de correo electrónico del destinatario será el
campo e-mail, completado por el usuario en el formulario. El
tema del mensaje será el contenido, y la dirección de respues-
ta, la que nosotros ingresemos en el código del programa
cuando lo armemos. En este caso fueron utilizadas las si-
guientes:
• Tema: confirmación
• Contenido: armamos un string con el contenido que de-
seamos enviar. Podemos utilizar “n” para comenzar una nue-
va línea, con el fin de no ver todo el mensaje corrido, sin sal-
tos de líneas.
En esta parte, también utilizamos el punto para concatenar
el texto a los valores de las variables.
$contenido .= “Telefono: “ . $telefono . “n”;
El .= significa que la variable “contenido” será igual a su va-
lor actual más lo que continúa. Es lo mismo que poner lo si-
guiente:
$contenido = $contenido . “xxxxxxxx”;
• Respuesta: mramos@infocomercial.com. Debemos incluir un string
del tipo From: Martin <mramos@infocomercial.com>.
• Opción 3: Mostrar resultados y enviarlos por e-mail. Aquí
utilizamos los códigos escritos arriba para ambas opciones an-
teriores.
Pueden encontrar el código completo en la página 62 y en la
carpeta DEVELOPERS del CD que acompaña a esta revista.
Conclusión
Vimos cómo crear un formulario sencillo con PHP. También
vimos cómo armar el programa para procesarlo, con formulario
incluido, identificando el tipo de operación que el usuario
quiera realizar. Ya nada nos impide comenzar a experimentar
con este lenguaje y hacer, por ejemplo, el mismo formulario
para almacenar dicha información en una base de datos. Pero
bueno, eso lo dejaremos para la próxima.
Developers_1_PHP_UI#5.qxd 4/4/01 1:48 PM Page 63