> Manuales > Taller de PHP

Explicación de la forma de enviar correos desde páginas PHP y ejemplos simples y complejos para realizar la tarea.

En este artículo te vamos a contar cómo enviar email desde PHP de la manera más simple y directa. Se trata de una utilidad que cualquier desarrollo requiere y por lo tanto algo que debes aprender rápidamente. Afortunadamente el proceso es bien simple, gracias a las funciones incorporadas en el propio lenguaje.

Para el envío de correos electrónicos utilizando PHP disponemos de una función bastante potente, incluida en todas las versiones de PHP, sin necesidad de instalar ningún añadido. Su comportamiento es bien sencillo, aunque en el trasfondo hay mucha información adicional para asegurarnos que el correo se entrega y para configurar PHP y el servidor SMTP que uses para la salida del email. En este artículo nos vamos a quedar en lo más elemental, aunque en DesarrolloWeb.com existen muchos artículos para ayudarte también en muchos otros aspectos y que te ofrecen diversas alternativas e información adicional para asegurarte que tus correos electrónicos se construyen y se entregan correctamente.

En concreto, en PHP disponemos de una función llamada mail() que permite configurar y enviar el mensaje de correo. La función se llama mail() y recibe tres parámetros de manera obligada y otros dos parámetros que podemos colocar opcionalmente. Devuelve true si se envió el mensaje correctamente y false en caso contrario.

Parámetros necesarios en todos los casos en la función mail()

Primero observemos los parámetros de obligado uso para la función mail() de PHP, que son los mismos que necesitarías en cualquier tipo de mensaje.

Ejemplo de envío de un mail sencillo

Como observarás a continuación enviar correo, con las configuraciones básicas, desde PHP es extremadamente sencillo.

<? 
mail("pepito@desarrolloweb.com,maria@guiartemultimedia.com","asuntillo","Este es el cuerpo del mensaje") 
?>

Parámetros opcionales de la función mail() para envío de correo

Además, la función mail(), nativa de PHP, te ofrece la posibilidad de indicar otros parámetros, de manera opcional. Pero, a pesar de ser simples parámetros opcionales, se recomienda el uso de al menos el primero.

Ejemplo complejo de envío de correo

Vamos a enviar un correo con formato HTML a pepito@desarrolloweb.com, con copia a mariano@desarrolloweb.com y con copia oculta para pepe@pepe.com y juan@juan.com. La dirección de respuesta la configuraremos a maria@desarrolloweb.com.

<?php 
$destinatario = "pepito@desarrolloweb.com"; 
$asunto = "Este mensaje es de prueba"; 
$cuerpo = ' 
<html> 
<head> 
   <title>Prueba de correo</title> 
</head> 
<body> 
<h1>Hola amigos!</h1> 
<p> 
<b>Bienvenidos a mi correo electrónico de prueba</b>. Estoy encantado de tener tantos lectores. Este cuerpo del mensaje es del artículo de envío de mails por PHP. Habría que cambiarlo para poner tu propio cuerpo. Por cierto, cambia también las cabeceras del mensaje. 
</p> 
</body> 
</html> 
'; 

//para el envío en formato HTML 
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 

//dirección del remitente 
$headers .= "From: Miguel Angel Alvarez <pepito@desarrolloweb.com>\r\n"; 

//dirección de respuesta, si queremos que sea distinta que la del remitente 
$headers .= "Reply-To: mariano@desarrolloweb.com\r\n"; 

//ruta del mensaje desde origen a destino 
$headers .= "Return-path: holahola@desarrolloweb.com\r\n"; 

//direcciones que recibián copia 
$headers .= "Cc: maria@desarrolloweb.com\r\n"; 

//direcciones que recibirán copia oculta 
$headers .= "Bcc: pepe@pepe.com,juan@juan.com\r\n"; 

mail($destinatario,$asunto,$cuerpo,$headers) 
?>
Nota: Antes de poner en marcha el script en vuestro servidor, por favor, cambiar los datos de configuración de las direcciones de correo que van a recibir el mensaje y colocar unas direcciones que sean vuestras y donde podáis comprobar si los mensajes se envían correctamente.

Conclusión

Pensamos y esperamos que después de este artículo compartáis nuestra opinión, que el envío de mails en PHP es una tarea muy sencilla. Además, es muy de agradecer que todas las versiones de PHP incluyan una función para el envío de mails.

Sin embargo, aunque esta tarea en principio puede resultar muy sencilla, hay que señalar que el envío de email no lo es tanto en realidad, en parte por la configuración del servidor, pero sobre todo porque debido a la cantidad de spam que circula por Internet, muchas veces podemos encontrar que a nosotros también nos catalogan como correo basura y por tanto nuestros mensajes se pierden.

Tratar que tu correo no se vaya al spam es una tarea compleja. Lo que está en nuestro lado y que podemos asegurarnos rápidamente es haber construido un mensaje bien formado, tener un servidor que no se encuentra en listas negras y tomar cuidado con respetar una serie de normas y consejos. Sobre todo eso hablamos en muchos otros artículos dentro de DesarrolloWeb.com. Te pasamos algunas referencias para complementar y ampliar esta información:

Nota: Para el envío de correo mediante PHP es necesario que este disponga de una correcta configuración.

Si nuestro web está en un servidor de un proveedor de hosting seguramente ya hayan configurado PHP para el envío de mails. Si estamos trabajando en un servidor propio, sí tendremos que configurar PHP.

PHP se configura en el archivo php.ini, donde debemos especificar datos como el servidor de correo saliente que debe de utilizar PHP para transferir los mensajes.

Dentro del php.ini, debemos buscar el epígrafe [mail function]. Dependiendo de nuestro sistema deberemos configurar de una manera u otra.

En sistemas Windows encontraremos el php.ini en el directorio windows o dentro de este, en el subdirectorio system32 o similar. En este sistema deberemos indicar el dominio del servidor de smtp, algo como smtp.midominio.com. Si es el ordenador local el que hace de servidor, podremos poner "localhost" como máquina que enviará el correo. También podemos especificar la dirección desde donde queremos que parezca que se envía el mensaje en caso de que no se indique otra durante el envío.

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online Escu...

Manual