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.
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
Publicado: 04/07/2009 4:06 pm
Muy bueno man!
Publicado: 05/07/2009 9:36 am
Genial!
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…
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
Publicado: 06/07/2009 10:30 am
Siempre explicaciones claras y concretas.
Felicitaciones y gracias por el aporte.
Publicado: 06/07/2009 4:12 pm
Hola justo lo que nesecitaba genial gracias!!!
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.
Publicado: 08/07/2009 1:51 pm
No logro que el codigo funcione necesito tener instalado algun servidor smtp en mi servidor???
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
Publicado: 26/07/2009 3:17 am
vaya man, en verdad te felicito por tu gran trabajo de compartir tu informacion con todos. :)
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
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
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.
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
Publicado: 28/11/2011 11:34 am
me sale esto: Could not instantiate mail function. alguien me puede ayudar
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?