¿Cansado de enviar emails sin diseño, que pasan desapercibidos o no se ven correctamente? En el artÃculo de hoy vamos a encargarnos de conocer cómo enviar emails HTML con PHP, formateados para que luzcan bonitos.
PHP usa la función mail() que puede ser usada con HTML para enviar un correo desde el backend con los datos que queramos.
El ultimo parámetro, los titulares ($headers), son opcionales para la función pero se requieren para mandar un e-mail HTML; porque esto es lo que permite mandar una declaración de tipo de contenido que le informa al cliente (de correo electrónico) que debe analizar el e-mail como HTML.
De hecho, los titulares nos están dando la oportunidad de llevar a cabo una gran cantidad de funciones de e-mail importantes. Aquà es dónde podemos setear las propiedades From y Reply To, como asà también CC y BCC a otros receptores. Este es el código que debemos utilizar:
-
$to = 'tucorreo@gmail.com';
-
-
$subject = 'Asunto del email';
-
-
$headers .= "CC: otrocorreo@hotmail.com\r\n";
-
$headers .= "MIME-Version: 1.0\r\n";
-
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
Ahora podemos utilizar etiquetas HTML
El parámetro mensaje (un gran string que pasamos a la función mail con el cuerpo de nuestro mensaje), ahora puede tener etiquetas HTML. Por ejemplo:
-
$message = '<html><body>';
-
$message .= '<h1>Hola, mundo!</h1>';
-
$message .= '</body></html>';
Aquà les dejo un ejemplo para incluir una tabla con datos:
-
$message = '<html><body>';
-
$message .= '<img src="http://tudominio.com/images/logo.png" alt="Logotipo" />';
-
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
-
$message .= "<tr style='background: #eee;'><td><strong>Nombre:</strong> </td><td>" . strip_tags($_POST['req-name']) . "</td></tr>";
-
$message .= "<tr><td><strong>Email:</strong> </td><td>" . strip_tags($_POST['req-email']) . "</td></tr>";
-
$message .= "<tr><td><strong>Opcion:</strong> </td><td>" . strip_tags($_POST['typeOfChange']) . "</td></tr>";
-
$message .= "<tr><td><strong>Urgencia:</strong> </td><td>" . strip_tags($_POST['urgency']) . "</td></tr>";
-
$message .= "<tr><td><strong>URL:</strong> </td><td>" . $_POST['URL-main'] . "</td></tr>";
-
$addURLS = $_POST['addURLS'];
-
if (($addURLS) != '') {
-
$message .= "<tr><td><strong>URL (adicional):</strong> </td><td>" . strip_tags($addURLS) . "</td></tr>";
-
}
-
if (($curText) != '') {
-
$message .= "<tr><td><strong>Contenido actual:</strong> </td><td>" . $curText . "</td></tr>";
-
}
-
$message .= "<tr><td><strong>Nuevo contenido:</strong> </td><td>" . htmlentities($_POST['newText']) . "</td></tr>";
-
$message .= "</table>";
-
$message .= "</body></html>";
Esto luce mucho más bonito. ¿Verdad?
A tener en cuenta
Algunas personas simplemente odian por completo el correo electrónico HTML. Por un lado, puede ser un riesgo de seguridad ya que es posible ejecutar JavaScript en ellos, en algunos clientes de correo electrónico, lo cual puede ser problemático. Además, los correos electrónicos HTML también tienen la costumbre de ser más fácilmente enviados a la carpeta de Spam. Pero creo que es una preocupación menor aquà como este correo electrónico es esencialmente creado por tà y para tÃ.
En CSS-Tricks encontrarán una demo y podrán descargar los archivos utilizados en el ejemplo








Miércoles, 17 de Febrero de 2010 a las 19.21
y ademas en los headeres podemos agregar archivos adjutos ;), nada mas que si es un proceso mas laborioso, ya que tienes que abrir el archivo a adjuntar y codificarlo a base64 y luego agregarlo al head, ahorita no recuerdo bien el proceso, pero de que se puede se puede, pero recomiendo mas usar la clase phpmailer
Lunes, 22 de Febrero de 2010 a las 16.49
Nosotros en la web utilizábamos el sistema que comentáis, pero se complicaba al añadir adjuntos, imágenes embebidas, etc.... Finalmente, como dice pakos, decidimos también cambiar a phpmailer, y nos funciona de maravilla. Deja enviar texto plano, html o ambos, adjuntos, imágenes embebidas, de una manera muy fácil. Espero que os sea util la información sin despreciar en absoluto el potencial de mail()
Martes, 2 de Marzo de 2010 a las 03.59
!! MUY INTERESANTE LA WEB COMPLETA LOS FELICITO Y ME SIENTO FELIZ DE RECIBIR SUS MENSAJES CON COSAS NUEVAS, GRACIAS LOS SALUDA ATTE: FATIMA
Sábado, 10 de Abril de 2010 a las 16.30
los felicito y espero que mantengan su filosofia de tener informados a quienes los contactamos con estas novedades tan interesantes...!!!
Viernes, 30 de Abril de 2010 a las 23.44
Muy interesante pero como podria cargar alguna imagen para que mi correo que envie al ser visualizado muestre dicha imagen como cuerpo del correo
Martes, 28 de Septiembre de 2010 a las 23.03
me gustaria saber como hacer un formulario y ademas comoo recibir los datos del formularioo
Martes, 28 de Septiembre de 2010 a las 23.04
paso a paso de como hacer formulario y como recibir los datos del foemulario
Jueves, 2 de Diciembre de 2010 a las 03.41
una consulta.. con este tipo de codigo podemos realizar en html un tipo de bandeja para envio de mails masivo?? o eso depende de servidor donde tienes hospedado tu web ??
cuantos mails podeis mandar ??
Jueves, 17 de Febrero de 2011 a las 08.30
Mi pregunta es, ¿Por qué tenemos la manÃa de utilizar tablas en el cuerpo del mensaje? ¿No estarÃa mejor y mas limpio el código si en vez de tablas utilizaramos capas y/o listas? Espero respuestas razonables.
Saludos y gracias.
Viernes, 18 de Marzo de 2011 a las 20.41
Quisiera saber cono numerar los mail, es para un formulario de quejas y reclamos pero cada mail debe ir numerado como se harÃa, agradezco la colaboración que puedan darme.
gracias
Martes, 22 de Marzo de 2011 a las 05.44
Buena utilidad, pero para usar con moderación que el spam está a la orden del dÃa.
Lunes, 2 de Mayo de 2011 a las 10.37
Hola a todos. Excelente el articulo. Recomiendo usar phpmailer. En el se encuentran los metodos de envio y todos los headers posibles que se necesitan para validar. Hasta ahora se ha reducido el hecho que lleguen a la bandeja de spam de los clientes.
Jueves, 26 de Mayo de 2011 a las 15.43
Hola genial