Enviar email con contenido html en php

Enviar emails con php es bastante fácil a través de su función mail() tal y como vimos en el artículo enviar un formulario por email con php

Si has realizado la implementación de la función mail() de php, has introducido código html en el cuerpo del mensaje y recibes el email como texto plano, sigue leyendo, esto tiene una solución muy fácil: tan solo hay que especificar la cabecera "Content-type: text/html".

La función mail de php tiene la siguiente sintaxis:

<?php 
   mail($destinatario,$asunto,$mensaje,$cabeceras,$parametros); 
?>

Veamos una por una:

  • $destinatario: este es un parámetro tipo string que debe incluir la dirección de email a la que se va a enviar el correo. Puede ser en forma "email@dominio.com" o en forma "Nombre Destinatario ". Se pueden especificar varios destinatarios separándolos por coma de la forma "Nombre destinatario ,otro@dominio.com,unomas ", pero ojo, si haces esto se enviará a una lista de destinatarios visibles, si quieres enviar el email a una lista pero que no sea visible tendrás que usar la cabecera Bcc (copia oculta, también conocida como CCO).
  • $asunto: string que contiene el asunto del email, el título visible en las bandejas de entrada.
  • $mensaje: es un parámetro tipo string que contiene el cuerpo del email. Puede ser texto plano o puedes incluir html. El propósito de este artículo es ver como, sí incluimos html aquí, sea tratado como tal por el cliente de correo del destinatario.
  • $cabeceras: parámetro opcional en el que se pueden especificar las cabeceras "From", Cc, Bcc, Content-type, y algunas más. Todas ellas son opcionales y si no se especifica alguna que sea necesaria (como el From) se tomarán las que haya por defecto en el archivo de configuración php.ini. Es aquí donde se debe especificar la cabecera "Content-type: text/html" para que si incluimos html en el email, este sea tratado correctamente por el cliente de correo del destinatario. Si incluimos más de una cabecera, cada una debe ir separada por CRLF (\r\n).
  • $parametros: este string se usa para especificar parámetros adicionales que servirán instrucciones para el programa de envío de emails. Es de uso bastante raro y es casi siempre omitido.

Por tanto, para enviar nuestro email con contenido html podríamos usar:

<?php 
  $destinatario = "Perico"; 
  $asunto = "Hola Perico"; 
  $mensaje = "<html>
                      <head>
                       <title>Hola Perico</title>
                      </head>
                      <body>
                       Ey Perico!! En este blog he aprendido a <a href=\"http://www.bllogie.es\">enviar emails con html</a>
                       </body>"; 
  $cabeceras = "Content-type: text/html\r\n"; 
  $cabeceras .= "From: Paquito\r\n"; 
   mail($destinatario,$asunto,$mensaje,$cabeceras); 
?>

Nota: la cabecera From es completamente necesaria, se puede omitir si hay una especificada en php.ini.



Comentarios (0)

Smileys

:confused::cool::cry::laugh::lol::normal::blush::rolleyes::sad::shocked::sick::sleeping::smile::surprised::tongue::unsure::whistle::wink: