Micaela 16 de Febrero de 2010 a las 08.00
   Imprimir artículo
elWebmaster.com

La mejor manera de enviar emails HTML con PHP


PHP¬Ņ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.

  1. mail($to, $subject, $message, $headers);

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:

  1. $to = 'tucorreo@gmail.com';
  2.  
  3. $subject = 'Asunto del email';
  4.  
  5. $headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
  6. $headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
  7. $headers .= "CC: otrocorreo@hotmail.com\r\n";
  8. $headers .= "MIME-Version: 1.0\r\n";
  9. $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:

  1. $message = '<html><body>';
  2. $message .= '<h1>Hola, mundo!</h1>';
  3. $message .= '</body></html>';

Aquí les dejo un ejemplo para incluir una tabla con datos:

  1. $message = '<html><body>';
  2. $message .= '<img src="http://tudominio.com/images/logo.png" alt="Logotipo" />';
  3. $message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
  4. $message .= "<tr style='background: #eee;'><td><strong>Nombre:</strong> </td><td>" . strip_tags($_POST['req-name']) . "</td></tr>";
  5. $message .= "<tr><td><strong>Email:</strong> </td><td>" . strip_tags($_POST['req-email']) . "</td></tr>";
  6. $message .= "<tr><td><strong>Opcion:</strong> </td><td>" . strip_tags($_POST['typeOfChange']) . "</td></tr>";
  7. $message .= "<tr><td><strong>Urgencia:</strong> </td><td>" . strip_tags($_POST['urgency']) . "</td></tr>";
  8. $message .= "<tr><td><strong>URL:</strong> </td><td>" . $_POST['URL-main'] . "</td></tr>";
  9. $addURLS = $_POST['addURLS'];
  10. if (($addURLS) != '') {
  11.     $message .= "<tr><td><strong>URL (adicional):</strong> </td><td>" . strip_tags($addURLS) . "</td></tr>";
  12. }
  13. $curText = htmlentities($_POST['curText']);
  14. if (($curText) != '') {
  15.     $message .= "<tr><td><strong>Contenido actual:</strong> </td><td>" . $curText . "</td></tr>";
  16. }
  17. $message .= "<tr><td><strong>Nuevo contenido:</strong> </td><td>" . htmlentities($_POST['newText']) . "</td></tr>";
  18. $message .= "</table>";
  19. $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 ;)


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (14)

  1. pakos dice:

    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

  2. Rafael Martín Soto dice:

    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() :)

  3. fatima dice:

    !! MUY INTERESANTE LA WEB COMPLETA LOS FELICITO Y ME SIENTO FELIZ DE RECIBIR SUS MENSAJES CON COSAS NUEVAS, GRACIAS LOS SALUDA ATTE: FATIMA

  4. FIDEL dice:

    los felicito y espero que mantengan su filosofia de tener informados a quienes los contactamos con estas novedades tan interesantes...!!!

  5. eduardo dice:

    Muy interesante pero como podria cargar alguna imagen para que mi correo que envie al ser visualizado muestre dicha imagen como cuerpo del correo

  6. jose ricardo dice:

    me gustaria saber como hacer un formulario y ademas comoo recibir los datos del formularioo

  7. jose ricardo dice:

    paso a paso de como hacer formulario y como recibir los datos del foemulario

  8. javier dice:

    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 ??

  9. Gon dice:

    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.

  10. Andres gallego Torres dice:

    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

  11. Hosting Hostalia dice:

    Buena utilidad, pero para usar con moderación que el spam está a la orden del día.

  12. JUAN FERNANDO dice:

    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.

  13. joel dice:

    Hola genial

  14. alex dice:

    Hola,
    MUy buen articulo.
    Pero como se pueden moderar comentarios en caso de que sea un form en un blog y que diga "esperando aprobacion de comentario" y se envie una notificacion por correo y ahi se vea si se aprueba o no el comentario.
    GRS

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Iniciar sesión