Envíar HTML con PHPMailer

Este artículo ya se encuentra obsoleto.
Para una referencia actual leer: Enviar email con PHP y evitar que sea marcado como SPAM

PHPMailer es un librería muy popular para hacer el envío de emails con PHP de manera sencilla, los principios básicos de esta librería la hemos comentado en Introducción a PHPMailer.

phpmailer-page

Enviando Contenido HTML
PHPMailer acepta hacer el envío de HTML, para ello debemos asignar a la propiedad Body el contenido HTML que deseamos enviar y setear con el método IsHTML a true, como en el siguiente ejemplo básico:

require_once("class.phpmailer.php");

$mail = new PHPMailer();
$mail->From = "from@domain.com";
$mail->FromName = "From Name";
$mail->Subject = "Demo de PHPMailer";
$mail->Body = "Hola Jim, bienvenido!!!";
$mail->IsHTML(true);
$mail->AddAddress("user@domain.com", "User Name");
$mail->Send();

Enviando Paginas HTML
Entonces si deseamos enviar una página, deberíamos tener el contenido de esta página en una variable y luego asignársela a la propiedad Body como en el ejemplo anterior. Para lograr esto haremos uso de la función file_get_contents el cual devuelve el contenido de una archivo en una variable.

$body = file_get_contents('http://tuweb.com/file.html');

Luego modificamos el código anterior para incluir por ejemplo la página de Google para enviarla, con lo cual nuestro código se transforma en:

require_once("class.phpmailer.php");
$body = file_get_contents('http://www.google.com/');

$mail = new PHPMailer();
$mail->From = "from@domain.com";
$mail->FromName = "From Name";
$mail->Subject = "Demo de PHPMailer";
$mail->Body = $body;
$mail->IsHTML(true);
$mail->AddAddress("user@domain.com", "User Name");
$mail->Send();

Este método de envío es útil cuando deseamos por ejemplo enviar el reporte de un usuario, por cada usuario tendrá un reporte diferente, para ello podríamos llamar a una página del tipo http://tuweb.com/reporte.php?id=354, otra posibilidad es para hacer el envío de boletines.

NOTA:
Hay que tener en cuenta que para que la página seleccionada se envíe correctamente todas las rutas internas de la página deben ser absolutas, es decir si hay una imagen la imgen debe estar incluida de la forma:

<img src="http://tuweb.com/photo.jpg" width="150" />

El otro punto a tener en cuenta es que debemos colocar la ruta completa del archivo a leer al momento de llamarlo con file_get_contents por que de lo contrario nos puede devolver el código php del archivo y no el resultado del procesamiento del archivo.

[download id=»15″ autop=»false»]

Comentarios Total 16 comentarios

David
Publicado: 04/07/2009 4:06 pm

Muy bueno man!

Kevin Maschke
Publicado: 05/07/2009 9:36 am

Genial!

CARLUISDYNHO
Publicado: 05/07/2009 7:15 pm

jej buen aporte! como suspendieron mi host bueno mi patrocinador es temporal pronto renacimiento! por eso vengo apollando a unijimpe jeje…

Miquel Soler
Publicado: 06/07/2009 4:06 am

Al probarlo me dice que mi servidor tiene desabilitada la funcion file_get_contents()y, al tratarse de un servidor externo, no puedo modificarlo.
SI lo pruebo sin la función funciona perfectamente.
Saludos

Daniel
Publicado: 06/07/2009 10:30 am

Siempre explicaciones claras y concretas.
Felicitaciones y gracias por el aporte.

Frank
Publicado: 06/07/2009 4:12 pm

Hola justo lo que nesecitaba genial gracias!!!

Dave73
Publicado: 07/07/2009 12:44 pm

Algunos servidores tienen filtros para el SPAM y no permiten el uso de estas librerías. Pero siempre hay un truco. En la cabecera «From» pueden poner «postmaster[at]dominio» y listo.

Enrique
Publicado: 08/07/2009 1:51 pm

No logro que el codigo funcione necesito tener instalado algun servidor smtp en mi servidor???

Krhis
Publicado: 09/07/2009 1:35 pm

hola estoy tratando de usar este codigo pero cuando envi el mail de da el siguiente error
Fatal error: Cannot redeclare class PHPMailer in C:\ms4w\Apache\htdocs\SISTUR\mail\class.phpmailer.php on line 34
no logro entender porq si ealguien puede ayudarme se os agradecere

estoy usando Qksmtp server 3

julio
Publicado: 26/07/2009 3:17 am

vaya man, en verdad te felicito por tu gran trabajo de compartir tu informacion con todos. :)

albert
Publicado: 19/01/2010 5:20 am

como desactivar la validación de phpmailer que solo valida correo i mensaje i hacer mi propia validación

correo, asunto, nombre y apellidos, mensaje, capatcha

Boris
Publicado: 09/01/2011 8:39 pm

Muy clara la explicación, trataré de implementarlo en un nuevo sitio http://www.ideaschile.cl, se agradecen estos aportes

McMclain
Publicado: 05/03/2011 1:41 pm

para los que quieran o tienen problemas de enviar paginas web o formato html a correos una buena opción es enviar el html con frames o iframes y alli apuntar a la pagina web que se quiera mostrar en el correo… bueno cuando la pagina esta escrita en php, para procesar informaciones.

FEgaYO
Publicado: 18/10/2011 9:09 am

Hola Como es K funciona desde el LocalHost o teng K configurar algo ‘?? esk No llega Ningun correo :( .. Gracias :D

roger
Publicado: 28/11/2011 11:34 am

me sale esto: Could not instantiate mail function. alguien me puede ayudar

Jose Fernando Conde
Publicado: 14/05/2012 12:08 pm

Hice todos los pasos y se queda en pantalla blanca y no me envía nada a los correos de hotmail y gmail que probé.

alguien me puede ayudar?

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)