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
Acceder